Frage Schnellste Möglichkeit, tar.gz zu extrahieren


Gibt es trotzdem eine tar.gz-Datei schneller als zu extrahieren tar -zxvf filenamehere?

Wir haben große Dateien und versuchen, den Vorgang zu optimieren.


35
2018-05-18 03:55


Ursprung


Finden Sie, dass die $ tar -zxvf Methode ist IO oder CPU gebunden? - EEAA
Glaub CPU, wie kann ich das überprüfen? - Justin
Nicht direkt verwandt, aber 'z' wurde seit 2004 nicht mehr benötigt / tar v1.1.5 gnu.org/software/tar/#TOCreleases :) - JamesHannah


Antworten:


Schwein ist eine parallele Version von gzip. Obwohl nur ein einzelner Thread für die Dekomprimierung verwendet wird, werden 3 zusätzliche Threads zum Lesen, Schreiben und Überprüfen der Berechnung gestartet. Ihre Ergebnisse können variieren, aber wir haben eine signifikante Verbesserung bei der Dekomprimierung einiger unserer Datensätze festgestellt. Sobald Sie potz installiert haben, kann die TAR-Datei extrahiert werden mit:

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


48
2018-05-18 05:01



+1. FWIW, du kannst das auch als schreiben tar -xvf --use-compress-program=pigz filenamehere. (-z beläuft sich auf --use-compress-program=gzip.) Alternativ kannst du sogar machen gzip sei ein Symlink zu pigzund benutze es weiter -zxvf. - ruakh
@ruakh, musste ich setzen -xf nach dem --use-compress-program=pigzoder ich habe einen Fehler erhalten. Aus irgendeinem Grund war es nicht schneller als zu verwenden gzip obwohl. - jonderry
Zum bzip2 es gibt pbzip2 (p für parallel). tar --use-compress-program=pbzip2 -xvf file.tar.bz2. - alfC
Gibt es eine Möglichkeit, die pv Befehl, um Fortschritt anzuzeigen, oder ein Äquivalent, während auch die --use-compress-program=pigz Flagge? Während der Kompression kann ich tun gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, aber nicht sicher, wie dies während Untar / Dekompression zu tun ist. - Stefan Lasiewski


Wenn es viele viele kleine Dateien im Teerball gibt, brechen Sie den 'v' Parameter ab, versuchen Sie es erneut!


11
2018-05-18 04:36



Ich benutze nie -v param. Ich weiß nicht, warum Leute so viel Lärm in der Konsole brauchen. - Eimantas
@Eimantas Wenn Sie etwas entpacken, das viele Dateien mit mehreren Gigabyte enthält, benötigen Sie einen Hinweis auf den Fortschritt. :) - Michael Hampton♦
@TimHughes: das ist wirklich toll zu wissen, bitte posten als separate Antwort! - smci
Michael Hampton Wenn Sie mehrere Gigabyte Dateien haben, aber mit einer großen Liste von kleinen Dateien gemischt haben, haben Sie einen guten Grund, nicht -v zu verwenden. In meinen lokalen Tests macht es besonders langsam, wenn Sie auf einem entfernten Server laufen über Terminal, was ich tun ist, du -s Verzeichnis zu sehen, so kann ich das Verzeichnis wachsen sehen ... - Luciano Andress Martini
Es könnte sich lohnen, es zu benutzen --checkpoint=NUMBER (Fortschrittsnachrichten werden bei jedem NUMMER ten Datensatz angezeigt) anstatt -v. - Stefan Lasiewski


Wenn Sie Fortschritte sehen möchten, verwenden Sie etwas wie pv. Hier ist ein Beispiel:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -

4
2017-11-29 20:19



das ist viel besser ... - Luciano Andress Martini