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.