Website-Suche

So führen Sie eine schnellere Datenkomprimierung mit pbzip2 durch


Einleitung

Was wäre, wenn Sie in der Lage wären, eine Datenkomprimierung viermal schneller durchzuführen, mit dem gleichen Komprimierungsverhältnis wie normalerweise? Das Befehlszeilenprogramm Pbzip2 kann dies leicht bewerkstelligen, da es Ihnen die Möglichkeit bietet, die Anzahl der CPUs und die Menge an RAM auszuwählen, die während des Komprimierungsprozesses verwendet werden sollen.

Reguläre tar- und bzip2-Kompression

Wir alle kennen den regulären Befehl, um die Verzeichniskomprimierung tar und bzip2 durchzuführen. Der folgende Befehl tar und komprimiert unser Sandbox-Verzeichnis FOOBAR. Wir stellen auch den folgenden Befehl voran, um die genaue Zeit zu erhalten, wie lange es dauern wird, die komprimierte Datei FOOBAR.tar.Bbz2 aus dem 242MB FOOBAR-Verzeichnis auszugeben:


time tar cjf FOOBAR1.tar.bz2 FOOBAR/

real    0m20.030s
user    0m19.828s
sys     0m0.304s

Aus der obigen Zeitausgabe können wir sehen, dass es etwa 20 Sekunden gedauert hat, um die folgende komprimierte Datei zu erstellen:


ls -lh FOOBAR1.tar.bz2 
-rw-r--r-- 1 root root 54M Mar 10 20:25 FOOBAR1.tar.bz2

Schnellere Komprimierung mit bpzip2

pbzip2 verwendet standardmäßig alle verfügbaren CPUs und 100MB RAM, um die Komprimierung durchzuführen. Der folgende Linux-Befehl führt die Verzeichniskomprimierung mit pbzip2 durch. Auch hier verwenden wir die Zeit, um die Ausführungszeit zu messen:


time tar -c FOOBAR | pbzip2 -c > FOOBAR2.tar.bz2

real    0m4.777s
user    0m35.588s
sys     0m1.060s

Alternativ führt der untenstehende Befehl zum gleichen Ergebnis:


time tar cf FOOBAR3.tar.bz2 --use-compress-prog=pbzip2 FOOBAR

real    0m4.764s
user    0m35.508s
sys     0m1.136s

Ressourcen reservieren

Wie bereits erwähnt, ermöglicht pbzip2 dem Benutzer, die Anzahl der CPUs und die Menge des RAM auszuwählen, die für die Komprimierung verwendet werden sollen. Das folgende Beispiel verwendet nur eine einzige CPU, um die angeforderte Komprimierung durchzuführen:


time tar -c FOOBAR | pbzip2 -c -p1 > FOOBAR4.tar.bz2

real    0m20.348s
user    0m19.972s
sys     0m0.648s

Um die ausgewählte Menge an RAM zu reservieren, verwenden Sie den Schalter -m. Standardmäßig verwendet pbzip2 100 MB. Im folgenden Beispiel wird die Komprimierung mit 1 CPU und 10 MB RAM durchgeführt:


time tar -c FOOBAR | pbzip2 -c -p1 -m10 > FOOBAR5.tar.bz2

real    0m20.362s
user    0m19.932s
sys     0m0.704s

Kompressionsstufe

Wie es bei allen Komprimierungsprogrammen üblich ist, ermöglicht pbzip2 auch die Einstellung des Komprimierungsverhältnisses. Der Komprimierungsbereich reicht von 1 bis 9, wobei der Standardwert 9 ist, was auch das beste Komprimierungsverhältnis ist. Um die Kompressionsrate zu ändern, z. 1 Verwendung -1:


 time tar -c FOOBAR | pbzip2 -c -1 > FOOBAR6.tar.bz2

real    0m3.786s
user    0m28.612s
sys     0m0.364s

Wenn Sie das obige Beispiel verwenden, erhalten Sie eine schnellere Ausführungszeit, aber einen größeren Dateinamen:


 # ls -lh *.bz2
-rw-r--r-- 1 root root 54M Mar 10 20:02 FOOBAR1.tar.bz2
-rw-r--r-- 1 root root 54M Mar 10 20:41 FOOBAR2.tar.bz2
-rw-r--r-- 1 root root 54M Mar 10 20:43 FOOBAR3.tar.bz2
-rw-r--r-- 1 root root 54M Mar 10 20:48 FOOBAR4.tar.bz2
-rw-r--r-- 1 root root 54M Mar 10 20:54 FOOBAR5.tar.bz2
-rw-r--r-- 1 root root 67M Mar 10 21:00 FOOBAR6.tar.bz2

Dekomprimierung

Eine Dekompression mit pbzip2 durchzuführen, führt zu einer erheblichen Zeitersparnis im Vergleich zu bzip2. Die folgenden Linux-Befehle können verwendet werden, um komprimierte bzip2-Daten mit dem Dienstprogramm pbzip2 zu dekomprimieren:


tar xf FOOBAR1.tar.bz2 --use-compress-prog=pbzip2
OR
pbzip2 -dc FOOBAR1.tar.bz2 | tar x

Verwandte Artikel: