Gibt es einen Linux-Befehl, um die tar.bz2-Datei parallel zu dekomprimieren?

17

Ich habe eine ziemlich große Datei (~ 50 GB) und die Ausführung dauert einige Zeit

tar xvf file.tar.bz2

darauf. Mir sind Programme bekannt, die parallele Komprimierung für bzip2-Dateien ausführen können, aber mir sind keine Programme bekannt, die parallele Dekomprimierung für bzip2-Dateien ausführen können.

Gibt es Programme, die dies erreichen können? Wie lautet die genaue Syntax des Befehls, der zum Extrahieren aus der Datei verwendet werden soll?

Ich benutze Ubuntu 12.04

user784637
quelle

Antworten:

22

lbzip2und pbzip2sind die Werkzeuge, die Sie für die parallele Komprimierung und Dekomprimierung verwenden können.

Verwendung:

lbzip2 -d <file.tar.bz2> 
pbzip2 -d <file.tar.bz2> 

-d Option wird für die Dekomprimierung verwendet.

So installieren Sie diese Pakete:

lbzip2 Installieren Sie lbzip2 Typ:

sudo apt-get install lbzip2

pbzip2 Installieren Sie pbzip2 Typ:

sudo apt-get install pbzip2
devav2
quelle
Also, wenn ich richtig verstehe, muss ich dekomprimieren und dann entpacken? Wie 2 Befehle im Gegensatz zu tar xvf?
User784637
1
Ja, wenn Sie es ausführen lbzip2 -d -n 2 file.tar.bz2, wird es eine TAR-Datei geben. Welches muss ungeteert sein.
Devav2
1
Aus der Manpage von pbzip2 (lbzip2 erzählt eine ähnliche Geschichte): "Dateien, die mit pbzip2 komprimiert werden, werden ebenfalls erheblich schneller, wenn sie mit pbzip2 dekomprimiert werden. Dateien, die mit bzip2 komprimiert wurden, werden nicht schneller, da bzip2 die Daten in einen einzelnen Block packt das kann nicht zwischen Prozessoren aufgeteilt werden. "
Tapio
1
@ Tapio Hier ist die Beschreibung für lbzip2"Komprimieren oder Dekomprimieren von FILE-Operanden oder Standardeingaben in reguläre Dateien oder Standardausgaben durch Aufrufen von Julian Sewards libbz2 aus mehreren Threads. Das Dienstprogramm lbzip2 verwendet mehrere Threads und einen eingabebundenen Splitter, auch wenn .bz2-Dateien dekomprimiert werden erstellt von Standard bzip2 (aber siehe BUGS unten). "
Devav2
1
Aus der Antwort allein würde ich verstehen, dass beide Programme irgendwie zusammen verwendet werden müssen - aber sie scheinen tatsächlich Alternativen zu sein? (Es heißt "lbzip2 und pbzip2 sind die Werkzeuge ...", "Verwendung: lbzip2 ... pbzip2 ...", "um diese zu installieren ...")
Volker Siegel
11

Mit der Option tar können Sie Ihr Archiv mit einem einzigen Befehl dekomprimieren -I. Sie können jedes Komprimierungsprogramm verwenden, das diese -dOption unterstützt .

tar -I lbzip2 -xvf <file.tar.bz2>

Dies ist beim Deaktivieren von großen Archiven sehr nützlich, da nicht die doppelte unkomprimierte Größe des Zieldateisystems (die temporäre Tar-Datei und die Ausgabedatei) zur Verfügung stehen muss. Es ist auch schneller, da Sie weitaus weniger Festplatten-E / A benötigen.

Das funktioniert natürlich auch beim Komprimieren:

tar -I lbzip2 -cvpf <file.tar.bz2> <file>

Prüfen Sie, ob tar --helpweitere Optionen verfügbar sind.

Ludovic Ronsin
quelle
1
Eine andere Option (zB wenn Ihre Version von "tar" die Option -I nicht versteht) istlbzip2 -dc file.tar.bz2 | tar xvf -
Wodin
5

Sie können pbzip2 mit dem -dFlag "dekomprimieren" verwenden,

von der manpage:

  pbzip2 -d myfile.tar.bz2

In diesem Beispiel wird die Datei "myfile.tar.bz2" in die dekomprimierte Datei "myfile.tar" dekomprimiert. Es wird die automatisch erkannte Anzahl von Prozessoren verwendet (oder 2 Prozessoren, wenn die automatische Erkennung nicht unterstützt wird).

Nach dem Dekomprimieren müssen Sie die Datei mit entpacken

 tar xf myfile.tar

Eine TAR-Datei ist nur ein Container, auf den Sie mehrere Komprimierungsalgorithmen anwenden können. Sie können beispielsweise eine ".tar.gz" oder eine ".tar.bz2" haben, auf die beide unterschiedliche Komprimierungsalgorithmen angewendet werden. Pbzip2 dekomprimiert also nur das Archiv, extrahiert aber nicht die Dateien. Verwenden Sie pbzip2, um die Dateien tarzu extrahieren. Tar sollte nicht lange dauern, da das Archiv bereits dekomprimiert ist und nur die Dateien extrahiert. (Beachten Sie, dass wir im Befehl tar weder das Flag 'z' noch das Flag 'j' verwenden, was darauf hinweist, dass wir die Datei auch dekomprimieren möchten.)

Sam
quelle
1
die manuelle Seite hat einige nützliche Beispiele: manpages.ubuntu.com/pbzip2
Savvas Radevic
@Sam Danke für die Antwort - könnten Sie den Kommentar beantworten, den ich auf die andere Antwort
hinterlassen habe
2

lbzip2 scheint in Ihrem Fall viel besser zu sein als pbzip2, da es in der Lage ist, die Dekomprimierung von Standard-.bz2-Dateien zu beschleunigen, während pbzip2 dies nicht tut. (Gerade getestet - 17 Sekunden für lbzip2 vs 56 Sekunden für pbzip2 auf einem teilweise geladenen Quad-Core).

Stefan Reich
quelle