“Gzip” komutuyla bir arşiv oluşturun


12

Komut gzip (tar değil - gerekli) ile bir arşiv oluşturmak zorunda ve arşiv başka bir dizinden dosyaları içermelidir - örneğin, / vb. Komutu kullanmaya çalıştım

gzip myetc.gz /etc

Ama işe yaramadı.


3
gzipdeğil zip. Farklı çalışan farklı araçlardır.
roaima

3
gzipsadece akış kompresörüdür. Dosyalar veya dizinler hakkında bilgi sahibi değildir.

3
Neden katran kullanamıyorsun?
marcelm

Katranınız yoksa, cpio'nuz var mı?
Rup

2
Arşiv oluşturmak istediğinizi söylüyorsunuz, ancak katran kullanamazsınız. "Katran" kelimesinin bir kısmının "Arşiv" den geldiğini biliyorsunuz. Yani, bu onun varoluş nedeni. Kimler veya ne "tar" ı bir arşiv oluşturma sürecinden çıkarmak ister? Temelde bir çekiçle bir vidanın nasıl sürüleceğini soruyorsunuz (tornavida değil - gerekli).
Mike S

Yanıtlar:


6

Gzip yalnızca tek bir dosya veya gzip'e aktarılan bir akışla çalışır. Bu yüzden önce tar ile olduğu gibi bir dosya oluşturmanız gerekir ve sonra bunu gzip edebilirsiniz. Diğer seçenek, tüm ayrı dosyaları gziplemek ve daha sonra bunu tek bir dosyaya katlamaktır.

Bu çözümlerin her ikisi de aptaldır ve kullanılmamalıdır. Dahili sıkıştırma seçeneği ile tar kullanmalı ve hepsini tek bir komutta yapmalısınız.


1
İlk yöntem neden aptal olmalı? Bu üretmek için olağan bir yoldur .tar.gz...
rexkogitans

Aptal muhtemelen doğru terim değildir, ancak c seçeneği ile katran kullanabilirsiniz, gzip kullanmak yerine. Daha basit ve gzip için katran borularının bir avantajı olduğuna inanmıyorum.
SPRBRN

Gzip, -r seçeneğiyle birden çok dosya için çalışabilir, ancak klasördeki her dosya için yeni bir .gz oluşturur.
Luciano Andress Martini

1
@rexkogitans - bu aptalca aynı şekilde cat filename | grep blahaptalca. Ayrıca optimumdan çok daha azdır, çünkü geniş bir ara alan kullanır. Bu kadar sadakatsiz, yetersiz ve genel olarak sadece çirkin diyebilir miyim bilmiyorum. Aptalca da çalışır.
Mike S

Ah, şimdi bu kadar aptal olanı görüyorum. Hayır, "tar -czf" işe yaramaz bir şey olmadığı için gitmenin yoludur fork().
rexkogitans

13

gzipdizinlerle değil dosyalarla çalışır. Bu nedenle, kullanmanız gereken bir dizinin arşivi taroluşturmak için (birden çok dosyadan tek bir tarball oluşturacaktır):

tar cvf myetc.tar /etc

veya sıkıştırılmış bir arşiv için:

tar cvzf myetc.tar.gz /etc

2
biri "-z" seçeneği olmayan bir "eski" sisteme sahipse, şunları yapabilirler: cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz ("/ etc" yerine neden "tar / .cet" yazdığımı merak ediyorsanız, bunun nedeni eski sistemlerde, tar kullanırken xvf, / etc çıktısına yazar ve üzerine yazar ... [veya bu durumda "pax" kullanmanız gerekir]). Ters komut, yani "/ bir yerde" altındaki bu arşiv çıkarmak için: cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Olivier Dulac

1

Gerçekten katranınız yoksa, (-r - özyinelemeli) seçeneğini kullanarak bir dizinin yedeğini oluşturmak için gzip'i kullanabilirsiniz, ancak belki de tam olarak beklediğiniz şey değildir ...

Orijinal dizini dokunulmaz tutmak istiyorsanız, önce dizininizi başka bir ada kopyalamanız gerekir.

#cp -a directory my_gzip_alone_backup

İkinci olarak, dizindeki tüm dosyaları özyinelemeli olarak sıkıştırırsınız (-r).

#gzip -r my_gzip_alone_backup

Şimdi my-gzip-alone-yedeğinin içine bir göz atalım. Beklediğiniz gibi myfile.gz adlı tek bir dosyaya sahip olmayacaksınız, ancak çok fazla dosya özyinelemeli olarak gziped. Ancak sembolik bağlantılar nedeniyle bunu vb. İle yapmak iyi değildir ...

Dizini açmak için gunzip ile aynı mantık uygulanabilir.

Başka bir yol, bunu yapmak için katranınız yoksa, ancak bu yayında gösterildiği gibi dd util'iniz varsa, dizini tek bir dosyaya dönüştürmektir: /ubuntu/626634/converting-a -dosyadan-dizin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.