Başka hiç kimsenin GNU'nun modern sürümlerinin tar
siz paketlerken sıkıştırmanıza izin verdiğinden bahsetmemiş olması garip :
tar -czf output.tar.gz directory1 ...
tar -cjf output.tar.bz2 directory2 ...
Ayrıca, ' -c
' (stdout'a veya stdin'den) ve ' -d
' (açma) seçeneklerini desteklemesi koşuluyla, seçtiğiniz kompresörü de kullanabilirsiniz :
tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...
Bu, herhangi bir alternatif kompresörü belirlemenize izin verir.
[ Eklendi : Dosyalardan ayıklıyorsanız gzip
veya bzip2
sıkıştırılmışsa, GNU bunları tar
otomatik olarak algılar ve uygun programı çalıştırır. Yani şunları kullanabilirsiniz:
tar -xf output.tar.gz
tar -xf output.tgz # A synonym for the .tar.gz extension
tar -xf output.tar.bz2
ve bunlar uygun şekilde ele alınacaktır. Standart olmayan bir kompresör kullanıyorsanız, ekstraksiyonu yaparken bunu belirtmeniz gerekir.]
Ayrılmanın nedeni, seçilen cevapta olduğu gibi, görevlerin ayrılmasıdır. Diğer şeylerin yanı sıra, bu, insanların cpio
(yerine tar
) dosyaları paketlemek için ' ' programını kullanabileceği ve daha sonra tercih edilen kompresörü kullanabileceği anlamına gelir (bir zamanlar, tercih edilen kompresör pack
, daha sonra idi compress
(ki bu, pack
) ve daha sonra gzip
her iki öncülünün etrafında halkalar dolaşan ve tamamen rekabet eden zip
(Unix'e taşınmıştır, ancak orada yerel değildir) ve şimdi bzip2
benim deneyimime göre genellikle% 10-20 avantaja sahiptir gzip
.
[ Eklendi : yanıtında cpio
komik geleneklere sahip birisi not edildi . Bu doğru, ancak GNU tar
ilgili seçenekleri (' -T -
') cpio
alana kadar, belirli bir dizinin altındaki her şeyi arşivlemek istemediğinizde daha iyi bir komuttu - aslında hangi dosyaların arşivleneceğini tam olarak seçebiliyordunuz. Olumsuz cpio
siz sadece o oldu olabilirdi dosyaları seçin - Eğer vardı onları seçin. Hala cpio
puanların olduğu bir yer var ; herhangi bir ara depolama olmadan bir dizin hiyerarşisinden diğerine yerinde kopyalama yapabilir:
cd /old/location; find . -depth -print | cpio -pvdumB /new/place
Bu arada, ' -depth
' seçeneği find
bu bağlamda önemlidir - dizinlerin kendi izinlerini ayarlamadan önce dizinlerin içeriğini kopyalar. Bu cevaba eklemeyi girmeden önce komutu kontrol ettiğimde, bazı salt okunur dizinleri kopyaladım (555 izni); kopyayı silmeye gittiğimde, ' rm -fr /new/place
' bitmeden önce dizinlerdeki izinleri gevşetmem gerekti. -depth
Seçenek olmasaydı, cpio
komut başarısız olurdu. Bunu yalnızca temizlik yapmaya gittiğimde yeniden hatırladım - aktarılan formül benim için bu kadar otomatikti (esas olarak uzun yıllar boyunca birçok tekrar sayesinde). ]