GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Lzma Vs Bzip2 – Bessere Komprimierung als bzip2 unter UNIX / Linux

Lzma steht für Lempel-Ziv-Markov-Kettenalgorithmus. Lzma ist ein Komprimierungstool wie bzip2 und gzip zum Komprimieren und Dekomprimieren von Dateien. Es ist in der Regel deutlich schneller und effizienter als die Bzip-Komprimierung. Wie wir wissen, ist die Komprimierungsrate von gzip schlechter als von bzip2 (und lzma).

Lassen Sie uns in diesem Artikel verstehen, wie man lzma verwendet, ein effektives Komprimierungsprogramm, das ein deutlich besseres Komprimierungsverhältnis und einen schnelleren Betrieb aufweist.

Komprimieren Sie die Eingabetextdatei mit lzma -c

$ lzma  -c --stdout  sample.txt  >sample.lzma

Dekomprimieren Sie die lzma-Datei mit der Option -d

$ lzma -d –stdout sample.lzma >sample.txt

Vergleich zwischen bzip2- und lzma-Komprimierungswerkzeugen

Um die Effektivität von lzma zu verstehen, lassen Sie uns eine 1 MB große sample.txt mit lzma und bzip2 komprimieren/dekomprimieren und das Ergebnis vergleichen. Diese Tests wurden mit einem Gerät durchgeführt, das über 1 GB RAM und einen Pentium 4-Prozessor verfügt.

Größe der Eingabedatei sample.txt:

$ ls -l sample.txt
-rw-r--r-- 1 bala bala   1048576 2010-05-14 19:43 sample.txt

Hinweis: Wir haben den Zeitbefehl vor jedem Komprimierungs- und Dekomprimierungsbefehl verwendet, um die CPU-Auslastung des Befehls zu ermitteln.

Komprimieren Sie die sample.txt mit bzip2

Komprimieren Sie die Eingabedatei mit dem Befehl bzip2 und es ist keine Option während der Komprimierung erforderlich.

$ time bzip2  sample.txt

real    0m27.874s
user    0m13.981s
sys     0m0.148s

$ ls -l sample.txt.bz2
-rw-r--r-- 1 bala bala      1750 2010-05-14 19:43 sample.txt.bz2

Nach bzip2 Komprimierung beträgt die Größe der Ausgabedatei 1750 Byte .

Entpacken Sie die sample.txt mit bunzip2

Dekomprimieren Sie die komprimierte Datei mit dem Dienstprogramm bunzip2 und es muss auch keine Option übergeben werden.

$ bunzip2  sample.txt.bz2

real    0m0.232s
user    0m0.128s
sys     0m0.020s

Komprimieren Sie die sample.txt mit lzma

Lassen Sie uns nun die sample.txt mit dem lzma-Befehl mit den folgenden Optionen komprimieren:

  • -c zum Komprimieren
  • –stdout, um die komprimierte Ausgabe in stdout zu drucken
$ time lzma  -c --stdout  sample.txt >sample.lzma

real    0m2.035s
user    0m1.544s
sys     0m0.132s

$ ls -l sample.lzma
-rw-r--r-- 1 bala bala       543 2010-05-14 19:48 sample.lzma

Nach der Komprimierung lzma erzeugt die Ausgabedatei mit der Größe 543 Bytes , was vergleichsweise weniger als der bzip2-Befehl ist. Außerdem ist, wie oben zu sehen, die von lzma verwendete CPU-Zeit viel geringer als die von bzip2.

Entpacken Sie die sample.txt mit lzma

Dekomprimieren Sie die *.lzma-Datei mit dem lzma-Befehl mit den folgenden Optionen:

  • -d zum Komprimieren
  • –stdout, um die dekomprimierte Ausgabe in stdout zu drucken
$ time lzma -d --stdout sample.lzma >sample.txt

real    0m0.043s
user    0m0.016s
sys     0m0.004s

Wie oben zu sehen ist, ist die von lzma durchgeführte Dekomprimierung um ein Vielfaches schneller als von bzip2

Verschiedene Stufen der Lzma-Komprimierung

  • Lzma bietet den Kompressionsbereich von -1 bis -9.
  • -9 ist die höchste Komprimierungsrate, die eine gewisse Zeit und Systemressourcen erfordert, um dies zu erreichen. Diese Verhältnisse gelten nicht für die Dekompression.
  • -1 ist die niedrigste Komprimierungsrate und läuft viel schneller.

Gehen Sie wie folgt vor, um eine schnelle lzma-Komprimierung mit dem niedrigen Komprimierungsverhältnis durchzuführen:

$ lzma -1 -c --stdout  sample.txt >sample.lzma

$ ls -l sample.lzma

-rw-r--r-- 1 bala bala       548 2010-05-14 20:47 sample.lzma

Hinweis: -fast ist Alias ​​für -1.

-9 ist das höchste Komprimierungsverhältnis und die Komprimierung dauert länger als das niedrige Komprimierungsverhältnis. Gehen Sie wie folgt vor, um eine intensive Komprimierung mit dem hohen Komprimierungsverhältnis durchzuführen:

$ lzma -9 -c --stdout  sample.txt >sample.lzma

$ ls -l sample.lzma
-rw-r--r-- 1 bala bala       543 2010-05-14 20:55 sample.lzma

Hinweis: -best ist ein Alias ​​für -9.


Linux
  1. Linux vs. Unix:Was ist der Unterschied?

  2. Migrieren von Unix nach Linux

  3. Linux-/UNIX-Betriebssystemdienst:autofs

  4. Welche Archivierungsmethode eignet sich besser zum Komprimieren von Textdateien unter Linux?

  5. Ist Linux ein Unix?

AWK-Befehl unter Linux/Unix

mkdir-Befehl unter Linux/Unix

Linux gegen Unix

Grep-Befehl unter Linux/UNIX

ls-Befehl unter Linux/UNIX

cp-Befehl unter Linux/UNIX