Lzma signifie Algorithme de chaîne de Lempel-Ziv-Markov. Lzma est un outil de compression comme bzip2 et gzip pour compresser et décompresser des fichiers. Il a tendance à être beaucoup plus rapide et efficace que la compression bzip. Comme nous le savons, le taux de compression gzip est pire que bzip2 (et lzma).
Dans cet article, comprenons comment utiliser lzma, un utilitaire de compression efficace qui offre un taux de compression nettement meilleur et un fonctionnement plus rapide.
Compressez le fichier texte d'entrée à l'aide de lzma -c
$ lzma -c --stdout sample.txt >sample.lzma
Décompressez le fichier lzma en utilisant l'option -d
$ lzma -d –stdout sample.lzma >sample.txt
Comparaison entre les outils de compression bzip2 et lzma
Pour comprendre l'efficacité de lzma, comprimons/décompressons un sample.txt de 1 Mo avec lzma et bzip2 et comparons le résultat. Ces tests ont été effectués avec la machine qui dispose de 1 Go de RAM et dont le processeur est un Pentium 4.
Taille du fichier d'entrée sample.txt :
$ ls -l sample.txt -rw-r--r-- 1 bala bala 1048576 2010-05-14 19:43 sample.txt
Remarque : Nous avons utilisé la commande time devant chaque commande de compression et de décompression pour obtenir l'utilisation du processeur de la commande.
Compressez le fichier sample.txt à l'aide de bzip2
Compressez le fichier d'entrée avec la commande bzip2 et il ne nécessite pas l'option lors de la compression.
$ 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
Après bzip2 compression, la taille du fichier de sortie est de 1750 octets .
Décompressez le fichier sample.txt à l'aide de bunzip2
Décompressez le fichier compressé avec l'utilitaire bunzip2 et il n'a également besoin d'aucune option pour être transmis.
$ bunzip2 sample.txt.bz2 real 0m0.232s user 0m0.128s sys 0m0.020s
Compresser le fichier sample.txt à l'aide de lzma
Compressons maintenant le fichier sample.txt à l'aide de la commande lzma avec les options suivantes :
- -c pour compresser
- –stdout pour imprimer la sortie compressée dans 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
Après la compression, lzma produit le fichier de sortie avec une taille de 543 octets , qui est comparativement inférieur à la commande bzip2. De plus, comme vu ci-dessus, le temps CPU utilisé par lzma est bien inférieur à celui de bzip2.
Décompressez le fichier sample.txt à l'aide de lzma
Décompressez le fichier *.lzma à l'aide de la commande lzma avec les options suivantes :
- -d pour compresser
- –stdout pour imprimer la sortie décompressée dans stdout
$ time lzma -d --stdout sample.lzma >sample.txt real 0m0.043s user 0m0.016s sys 0m0.004s
Comme vu ci-dessus, la décompression effectuée par lzma est plusieurs fois plus rapide que bzip2
Différents niveaux de compression Lzma
- Lzma fournit la plage de compression de -1 à -9.
- -9 est le taux de compression le plus élevé, ce qui nécessite un certain temps et des ressources système pour le faire. Ces ratios ne s'appliquent pas à la décompression.
- -1 est le taux de compression le plus bas et il s'exécute beaucoup plus rapidement.
Procédez comme suit pour effectuer une compression lzma rapide en utilisant le taux de compression de bas niveau :
$ 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
Remarque : -fast est l'alias de -1.
-9 est le taux de compression de niveau le plus élevé et il faut plus de temps pour compresser que le taux de niveau bas. Procédez comme suit pour effectuer une compression intensive en utilisant le taux de compression de haut niveau :
$ 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
Remarque : -best est un alias de -9.