GNU/Linux >> Tutoriales Linux >  >> Linux

Lzma Vs Bzip2:mejor compresión que bzip2 en UNIX / Linux

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

Nota: Usamos el comando de tiempo delante de cada comando de compresión y descompresión para obtener el uso de CPU del comando.

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

Nota: -fast es un alias de -1.

-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

Nota: -mejor es alias a -9.


Linux
  1. Migración de Unix a Linux

  2. ¿Por qué Printf es mejor que Echo?

  3. Linux:¿Linux es un Unix?

  4. Linux:¿directorios estándar y/o comunes en sistemas operativos Unix/linux?

  5. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

Comando AWK en Linux/Unix

Comando mkdir en Linux/Unix

Linux frente a Unix

Comando Grep en Linux/UNIX

Comando ls en Linux/UNIX

comando cp en Linux/UNIX