GNU/Linux >> Znalost Linux >  >> Linux

Lzma vs Bzip2 – lepší komprese než bzip2 na UNIX / Linux

Lzma je zkratka pro Lempel-Ziv-Markov chain Algorithm. Lzma je komprimační nástroj jako bzip2 a gzip pro kompresi a dekomprimaci souborů. Bývá výrazně rychlejší a efektivnější než komprese bzip. Jak víme, kompresní poměr gzip je horší než bzip2 (a lzma).

V tomto článku si vysvětlíme, jak používat lzma, efektivní kompresní nástroj, který má výrazně lepší kompresní poměr a rychlejší provoz.

Zkomprimujte vstupní textový soubor pomocí lzma -c

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

Dekomprimujte soubor lzma pomocí volby -d

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

Porovnání mezi nástroji pro kompresi bzip2 a lzma

Abychom porozuměli účinnosti lzma, komprimujme/dekomprimujeme 1MB sample.txt s lzma i bzip2 a porovnejme výsledek. Tyto testy byly provedeny na počítači, který má 1 GB RAM a procesor  je Pentium 4.

Velikost vstupního souboru sample.txt:

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

Poznámka: Použili jsme příkaz time před každým příkazem pro kompresi a dekompresi, abychom zjistili využití CPU příkazu.

Komprimujte soubor sample.txt pomocí bzip2

Vstupní soubor zkomprimujte příkazem bzip2 a během komprese tuto volbu nevyžaduje.

$ 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

Po bzip2 kompresi, velikost výstupního souboru je 1750 bajtů .

Dekomprimujte soubor sample.txt pomocí bunzip2

Dekomprimujte komprimovaný soubor pomocí nástroje bunzip2 a také nevyžaduje předání žádné možnosti.

$ bunzip2  sample.txt.bz2

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

Komprimujte soubor sample.txt pomocí lzma

Nyní zkomprimujme sample.txt pomocí příkazu lzma s následujícími možnostmi:

  • -c pro komprimaci
  • –stdout pro tisk komprimovaného výstupu ve formátu stdout
$ 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

Po kompresi lzma vytvoří výstupní soubor o velikosti 543 bajtů , což je poměrně méně než příkaz bzip2. Také, jak je vidět výše, čas procesoru používaný lzma je mnohem kratší než u bzip2.

Dekomprimujte soubor sample.txt pomocí lzma

Dekomprimujte soubor *.lzma pomocí příkazu lzma s následujícími možnostmi:

  • -d pro komprimaci
  • –stdout pro tisk dekomprimovaného výstupu ve formátu stdout
$ time lzma -d --stdout sample.lzma >sample.txt

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

Jak je vidět výše, dekomprese prováděná pomocí lzma je mnohonásobně rychlejší než bzip2

Různé úrovně komprese Lzma

  • Lzma poskytuje rozsah komprese od -1 do -9.
  • -9 je nejvyšší kompresní poměr, který vyžaduje určité množství času a systémových prostředků. Tyto poměry nejsou použitelné pro dekompresi.
  • -1 je nejnižší kompresní poměr a běží mnohem rychleji.

Chcete-li provést rychlou kompresi lzma pomocí nízkého kompresního poměru, postupujte takto:

$ 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

Poznámka: -fast je alias na -1.

-9 je nejvyšší kompresní poměr a komprese trvá déle než poměr nízké úrovně. Chcete-li provést intenzivní kompresi pomocí vysokého kompresního poměru, postupujte takto:

$ 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

Poznámka: -nejlepší je alias na -9.


Linux
  1. Migrace Unixu na Linux

  2. Proč je Printf lepší než Echo?

  3. Linux – standardní a/nebo společné adresáře na operačních systémech Unix/linux?

  1. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  2. Proč je Linux VPS lepší volbou než Windows VPS

  3. Služba Linux / UNIX OS:autofs

  1. Linux vs. Unix:Jaký je rozdíl?

  2. Linux – Je Linux Unix?

  3. Která metoda archivace je lepší pro kompresi textových souborů v systému Linux?