Tar.gz dosyasını çıkarmanın en hızlı yolu


42

Zaten bir tar.gz dosyasını ayıklamak için zaten var mı tar -zxvf filenamehere?

Büyük dosyalarımız var ve işlemi optimize etmeye çalışıyoruz.


2
Bunu buluyorlar $ tar -zxvfyöntem IO veya CPU sınırın nedir?
AÇA,

1
CPU'ya inanın, nasıl kontrol edebilirim?
Justin,

5
Doğrudan ilişkili değil, ancak 'z' 2004'ten beri gerekli olmadı / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah

Yanıtlar:


57

pigz , gzip'in paralel bir versiyonudur. Dekompresyon için sadece tek bir iplik kullanmasına rağmen, okuma, yazma ve kontrol hesaplama için 3 ek iplik başlatır. Sonuçlarınız değişebilir, ancak bazı veri setlerimizin dekompresyonunda önemli bir iyileşme gördük. Pigz'i yükledikten sonra tar dosyası şu şekilde çıkarılabilir:

pigz -dc target.tar.gz | katran xf -


11
+1. FWIW, bunu da yazabilirsiniz tar -xvf --use-compress-program=pigz filenamehere. ( -ztutar --use-compress-program=gzip.) Alternatif olarak, hatta gzipbir bağlantı olabilir pigzve kullanmaya devam edebilirsiniz -zxvf.
ruakh

2
@ruakh, -xfsonra koymak zorunda kaldım --use-compress-program=pigzya da bir hata aldım. Bazı nedenlerden dolayı gzipolsa kullanmaktan daha hızlı değildi .
jonderry

İçin bzip2olduğu pbzip2( pparalel için). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC

Bayrağı pvkullanırken, ilerlemeyi göstermek için komutu ya da eşdeğerini kullanmanın bir yolu var mı --use-compress-program=pigz? Sıkıştırma sırasında bunu yapabilirim gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, ancak untar / uncompression sırasında bunun nasıl yapıldığından emin değilim.
Stefan Lasiewski

13

katran topunda birçok küçük dosya varsa, 'v' parametresini iptal edin, tekrar deneyin!


3
Asla -v paramını kullanmam. İnsanların neden konsolda bu kadar gürültüye ihtiyaç duyduğunu bilmiyorum.
Eimantas

9
@Eimantas Çok gigabaytlık çok sayıda dosya içeren bir şeyi çıkardığınızda, bir miktar ilerleme göstergesi isteyeceksiniz. :)
Michael Hampton

@TimHughes: Bunu bilmek gerçekten harika, lütfen ayrı bir cevap olarak gönderin!
smci

Çok gigabaytlık bir dosyanız varsa, ancak büyük bir küçük dosya listesi ile karıştırılırsanız Michael Hampton -v kullanmak için iyi bir nedeniniz varsa, yerel testlerimde, uzak bir sunucuda tar kullanıyorsanız, özellikle tar'ı çok yavaşlatır terminal aracılığıyla yaptığım şey du -s dizinini izlemek, böylece dizinin büyümesini izleyebiliyorum ...
Luciano Andress Martini

Kullanmaya değer olabilir --checkpoint=NUMBER( her NUMBERth kaydının ilerleme iletilerini görüntüleme ) yerine -v.
Stefan Lasiewski,

6

İlerlemeyi görmek istiyorsanız, bunun gibi bir şey kullanın pv. İşte bir örnek:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
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.