Yanıtlar:
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
bash kullandığınızı varsayarsak. Genellikle, GZIP ortam değişkenini "-9" olarak ayarlayın ve tar'ı normal şekilde çalıştırın.
Ayrıca - gerçekten en iyi sıkıştırmayı istiyorsanız, gzip kullanmayın. Lzma veya 7z kullanın.
Ve gzip kullanırken (zaten çeşitli nedenlerden dolayı iyi bir fikirdir) pigz
programı kullanmayı düşünmeyin gzip
.
GZIP_OPT
, kullanım aynı olmalı.
Tar için gzip bayrağını kullanmak yerine, tar işleminden sonra dosyaları elle gzipleyin, ardından gzip programı için sıkıştırma seviyesini belirleyebilirsiniz:
tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar
Veya kullanabilirsiniz:
tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz
Gzip komut satırındaki -9, gzip'e maksimum sıkıştırma düzeyini kullanmalarını söyler (varsayılan değer -6'dır).
Düzenleme: @depesz yorumlarına dayanarak sabit boru komut satırı.
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
beri gzip
".gz" uzantısı ekler.
f -
? dosya yoksa, o zaman stdin / out
Tar'ın modern versiyonları xz arşiv formatını destekler (GNU tar, 2009'da 1.22 , 2010'da 1.17.0'dan beri Busybox ).
Bu dayanıyor lzma2 tür bir gibi 7-Zip sürümünü gz . Bu, xz desteğine gereksinim duyma zorunluluğunuz varsa, daha iyi bir sıkıştırma sağlar.
tar -Jcvf file.tar.xz /path/to/directory
Ben sadece burada (temelde bu sorunun bir dupe, ama Unix stackexchange) diğer yazıdaki GZIP bir benzer XZ sıkıştırma seviyesini kontrol etmek için bir XZ_OPT = -9 ortam değişkeni olduğunu öğrendim.
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
tar cv /path/to/directory | gzip --best > file.tar.gz
Bu Matrix Mole'un ikinci çözümü, ancak biraz kısaltılmış:
Tar çağırırken, seçenek f
çıktının bir dosya olduğunu belirtir. Bunu Ayar -
(stdout'ta) katran hem olmadan varsayılan davranıştır standart çıktıya çıktı gönderme yapar f
ve -
.
gzip
Man sayfası tarafından belirtildiği gibi , eğer hiçbir dosya belirtilmezse, gzip standart girişten sıkıştırılır. Gerek yoktur -
içinde gzip
çağrı.
Option --best
(eşdeğerde -9
) en yüksek sıkıştırma seviyesini ayarlar.
xz
ve pixz
çok çalışır . Bir ara .tar dosyası oluşturmak zorunda kalmadan paralel sıkıştırma için kullanılan diş sayısını kontrol etmek için harika bir yoldur. Öyletar -cv /path/to/dir | pixz -p4 > output.tpxz
-I kullanarak sıkıştırma programını belirleme seçeneği de vardır. Bu, sıkıştırma seviyesi seçeneğini içerebilir.
tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
-I
, her şeyi yürütmek için bir program adı olarak ele almaya çalışırlar ve bu nedenle başarısız olurlar. En azından Debian Stretch'deki tar 1.29'dan itibaren, bu işe yarıyor.
top
200% -400 $ CPU arasında herhangi bir yeri kullanarak izleyebilir ve görebilirsiniz.