Najszybszy sposób na wyodrębnienie tar.gz

42

Czy w ogóle istnieje możliwość szybszego wyodrębnienia pliku tar.gz tar -zxvf filenamehere?

Mamy duże pliki i staramy się zoptymalizować operację.

Justin
źródło
2
Czy odkrywasz, że $ tar -zxvfmetoda jest związana z IO lub CPU?
EEAA
1
Uwierz CPU, ale jak mogę to sprawdzić?
Justin
5
Nie jest bezpośrednio powiązane, ale „z” nie jest wymagane od 2004 / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah

Odpowiedzi:

57

pigz to równoległa wersja gzip. Chociaż używa tylko jednego wątku do dekompresji, uruchamia 3 dodatkowe wątki do czytania, pisania i sprawdzania obliczeń. Twoje wyniki mogą się różnić, ale zauważyliśmy znaczną poprawę dekompresji niektórych naszych zestawów danych. Po zainstalowaniu pigz plik tar można wyodrębnić za pomocą:

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

TimS
źródło
11
+1. FWIW, możesz również napisać to jako tar -xvf --use-compress-program=pigz filenamehere. ( -zwynosi --use-compress-program=gzip.) Alternatywnie możesz nawet stworzyć gzipsymboliczne łącze do pigzi używać go dalej -zxvf.
ruakh
2
@ruakh, musiałem wstawić -xfpóźniej --use-compress-program=pigz, albo dostałem błąd. Z jakiegoś powodu nie było to jednak szybsze niż używanie gzip.
poniedziałek,
Ponieważ bzip2jest pbzip2( pdla równoległych). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC
Czy istnieje sposób użycia pvpolecenia, aby pokazać postęp, lub ekwiwalent, jednocześnie używając --use-compress-program=pigzflagi? Podczas kompresji mogę to zrobić gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, ale nie jestem pewien, jak to zrobić podczas rozpakowywania / rozpakowywania.
Stefan Lasiewski
13

jeśli w tarce znajduje się wiele, wiele małych plików, anuluj parametr „v”, spróbuj ponownie!

anonimowy
źródło
3
Nigdy nie używam -v param. Nie wiem, dlaczego ludzie potrzebują tak dużo hałasu na konsoli.
Eimantas
9
@Eimantas Kiedy rozpakowujesz coś, co zawiera wiele plików wielogigabajtowych, będziesz potrzebować pewnych wskazówek dotyczących postępu. :)
Michael Hampton
@ TimHughes: to naprawdę wspaniale wiedzieć, proszę pisać jako osobną odpowiedź!
smci
Michael Hampton, jeśli masz pliki wielogigabajtowe, ale zmieszane z dużymi listami małych plików, masz dobry powód, aby nie używać -v, w moich lokalnych testach powoduje, że tar działa bardzo wolno, szczególnie jeśli masz tar działający na zdalnym serwerze przez terminal, co robię, to oglądać katalog du -s, dzięki czemu mogę obserwować, jak rośnie katalog ...
Luciano Andress Martini
Warto użyć --checkpoint=NUMBER( wyświetlaj komunikaty postępu co NUMBER-ty rekord ) zamiast -v.
Stefan Lasiewski
6

Jeśli chcesz zobaczyć postęp, użyj czegoś takiego pv. Oto przykład:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
Tim Hughes
źródło