Lzma significa algoritmo de cadena Lempel-Ziv-Markov. Lzma es una herramienta de compresión como bzip2 y gzip para comprimir y descomprimir archivos. Tiende a ser significativamente más rápido y eficiente que la compresión bzip. Como sabemos, la relación de compresión gzip es peor que bzip2 (y lzma).
En este artículo, comprendamos cómo usar lzma, una utilidad de compresión efectiva que es significativamente mejor en relación de compresión y una operación más rápida.
Comprime el archivo de texto de entrada usando lzma -c
$ lzma -c --stdout sample.txt >sample.lzma
Descomprima el archivo lzma usando la opción -d
$ lzma -d –stdout sample.lzma >sample.txt
Comparación entre las herramientas de compresión bzip2 y lzma
Para comprender la eficacia de lzma, comprimamos/descomprimamos un archivo sample.txt de 1 MB con lzma y bzip2 y comparemos el resultado. Estas pruebas se han realizado con la máquina que tiene 1 GB de RAM y el procesador es Pentium 4.
Tamaño del archivo de entrada sample.txt:
$ ls -l sample.txt -rw-r--r-- 1 bala bala 1048576 2010-05-14 19:43 sample.txt
Comprime el archivo sample.txt usando bzip2
Comprima el archivo de entrada con el comando bzip2 y no requiere la opción durante la compresión.
$ 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
Después de bzip2 compresión, el tamaño del archivo de salida es de 1750 bytes .
Descomprima el archivo sample.txt usando bunzip2
Descomprima el archivo comprimido con la utilidad bunzip2 y tampoco necesita pasar ninguna opción.
$ bunzip2 sample.txt.bz2 real 0m0.232s user 0m0.128s sys 0m0.020s
Comprime el archivo sample.txt usando lzma
Ahora, comprimamos el archivo sample.txt usando el comando lzma con las siguientes opciones:
- -c para comprimir
- –stdout para imprimir la salida comprimida en 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
Después de la compresión, lzma produce el archivo de salida con un tamaño de 543 bytes , que es comparativamente menor que el comando bzip2. Además, como se vio anteriormente, el tiempo de CPU utilizado por lzma es mucho menor que el de bzip2.
Descomprima el archivo sample.txt usando lzma
Descomprima el archivo *.lzma usando el comando lzma con las siguientes opciones:
- -d para comprimir
- –stdout para imprimir la salida descomprimida en stdout
$ time lzma -d --stdout sample.lzma >sample.txt real 0m0.043s user 0m0.016s sys 0m0.004s
Como se vio arriba, la descompresión realizada por lzma es muchas veces más rápida que bzip2
Diferentes niveles de compresión Lzma
- Lzma proporciona el rango de compresión de -1 a -9.
- -9 es la relación de compresión más alta, lo que requiere cierta cantidad de tiempo y recursos del sistema para hacerlo. Estas proporciones no son aplicables para la descompresión.
- -1 es la relación de compresión de nivel más bajo y funciona mucho más rápido.
Haga lo siguiente para realizar una compresión lzma rápida utilizando la relación de compresión de bajo nivel:
$ 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
-9 es la relación de compresión de nivel más alto y lleva más tiempo comprimir que la relación de nivel bajo. Haga lo siguiente para realizar una compresión intensiva utilizando la relación de compresión de alto nivel:
$ 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