GNU/Linux >> Linux Esercitazione >  >> Linux

Lzma Vs Bzip2 – Migliore compressione rispetto a bzip2 su UNIX/Linux

Lzma sta per Algoritmo della catena Lempel-Ziv-Markov. Lzma è uno strumento di compressione come bzip2 e gzip per comprimere e decomprimere file. Tende ad essere significativamente più veloce ed efficiente della compressione bzip. Come sappiamo, il rapporto di compressione gzip è peggiore di bzip2 (e lzma).

In questo articolo, cerchiamo di capire come utilizzare lzma, un'utilità di compressione efficace che è significativamente migliore nel rapporto di compressione e nel funzionamento più veloce.

Comprimi il file di testo di input usando lzma -c

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

Decomprimi il file lzma usando l'opzione -d

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

Confronto tra gli strumenti di compressione bzip2 e lzma

Per comprendere l'efficacia di lzma, comprimiamo/decomprimiamo un sample.txt da 1 MB con lzma e bzip2 e confrontiamo il risultato. Questi test sono stati eseguiti con la macchina che dispone di 1 GB di RAM e il processore è Pentium 4.

Dimensione del file di input sample.txt:

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

Nota: Abbiamo usato il comando time prima di ogni comando di compressione e decompressione per ottenere l'utilizzo della CPU del comando.

Comprimi il file sample.txt usando bzip2

Comprimi il file di input con il comando bzip2 e non richiede l'opzione durante la compressione.

$ 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

Dopo bzip2 compressione, la dimensione del file di output è di 1750 byte .

Decomprimi sample.txt usando bunzip2

Decomprimi il file compresso con l'utilità bunzip2 e non ha bisogno di alcuna opzione per essere passato.

$ bunzip2  sample.txt.bz2

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

Comprimere sample.txt usando lzma

Ora comprimiamo sample.txt usando il comando lzma con le seguenti opzioni:

  • -c per comprimere
  • –stdout per stampare l'output compresso in 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

Dopo la compressione, lzma produce il file di output con una dimensione di 543 byte , che è relativamente inferiore al comando bzip2. Inoltre, come visto sopra, il tempo della CPU utilizzato da lzma è molto inferiore rispetto a bzip2.

Decomprimi sample.txt usando lzma

Decomprimi il file *.lzma usando il comando lzma con le seguenti opzioni:

  • -d per comprimere
  • –stdout per stampare l'output decompresso in stdout
$ time lzma -d --stdout sample.lzma >sample.txt

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

Come visto sopra, la decompressione fatta da lzma è molte volte più veloce di bzip2

Diversi livelli di compressione Lzma

  • Lzma fornisce l'intervallo di compressione da -1 a -9.
  • -9 è il rapporto di compressione più alto, che richiede una certa quantità di tempo e risorse di sistema per farlo. Questi rapporti non sono applicabili per la decompressione.
  • -1 è il rapporto di compressione del livello più basso e funziona molto più velocemente.

Effettuare le seguenti operazioni per eseguire una rapida compressione lzma utilizzando il rapporto di compressione di basso livello:

$ 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

Nota: -fast è l'alias di -1.

-9 è il rapporto di compressione di livello più alto e richiede più tempo per la compressione rispetto al rapporto di livello basso. Procedi come segue per eseguire una compressione intensiva utilizzando il rapporto di compressione di alto livello:

$ 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

Nota: -best è alias di -9.


Linux
  1. Migrazione da Unix a Linux

  2. Perché Printf è meglio di Echo?

  3. Linux:Linux è un Unix?

  4. Linux – I diversi kernel Linux/unix sono intercambiabili?

  5. Servizio Linux / UNIX OS:autofs

Comando AWK in Linux/Unix

comando mkdir in Linux/Unix

Linux vs Unix

Comando Grep in Linux/UNIX

comando ls in Linux/UNIX

comando cp in Linux/UNIX