2.8.1. Compresión

Los tres compresores habituales en los sistemas linux son gzip, bzip2 y xz. Los tres presentan las mismas opciones básicas con lo que conocido el funcionamiento de uno, se conoce el funcionamiento de los todos.

Aunque los tres sigan presentes, bzip2 está en franco retroceso. gzip no tiene tan buen nivel de compresión, pero en compensación es más rápido y gasta menos memoria, lo que puedo hacerlo apropiado para sistemas que corren en un hardware más limitado. En cambio, xz, que es el más reciente, comprime más que bzip2 y requiere menos tiempo de descompresión, lo que ha hecho que haya ido comiéndole terreno a bzip21.

2.8.1.1. Compresiones habituales

gzip

Comprime ficheros usando el algoritmo LZ77. Los ficheros comprimidos suelen marcarse con la extensión .gz. Su sintaxis, análoga a la del resto de compresores es la siguiente:

gzip [<opciones>] [fichero1 [fichero2 ...]]

y su modo de proceder también. La orden:

$ gzip fichero.txt

Convierte el fichero original en el fichero comprimido fichero.txt.gz. Obsérvese, pues, que el original se pierde. Si pasamos varios ficheros:

$ gzip fichero1.txt fichero2.txt

Obtendremos los ficheros fichero1.txt.gz y fichero2.txt.gz comprimidos por separado, ya que la fusión de varios ficheros en uno sólo es labor de empaquetación y la realiza un empaquetador como veremos más adelante (tar). Esto lo diferencia de herramientas de compresión típicas de los sistemas windows como zip o rar, que además de comprimir generan un fichero contenedor para poder incluir distintos ficheros en uno sólo.

Las opciones más recurrentes de gzip son:

-1, … -9:

Indica el nivel de compresión desde 1, el nivel más bajo. a 9, el nivel más alto. Cuanto mayor sea el nivel de compresión más pequeño será el resultado, pero más costoso en procesador y tiempo llegar a él. Cuando no se indica ningún nivel explícitamente, se usa -6.

-c:

Comprime en la salida estándar. Esto permite tanto no perder el fichero original como cambiar el nombre del fichero resultante:

$ gzip -c fichero.txt > fichero.comprimido.txt.gz

La opción es obligada cuando no se comprime el contenido de un fichero, sino que al no indicarse ninguno como argumento, se toma el flujo de datos de la entrada estándar:

$ echo "Quiero comprimir esto" | gzip -c > frase.txt.gz
-t:

Comprueba la integridad de un fichero comprimido:

$ gzip -t frase.txt.gz
-l:

Devuelve el grado de compresión del fichero y los tamaños antes y después de la compresión:

$ gzip -l frase.txt.gz
-d

En vez de comprimir, descomprime. Por ejemplo:

$ gzip -dc frase.txt.gz
Quiero comprimir esto
$ gzip -d frase.txt.gz
$ cat frase.txt
Quiero comprimir esto

Para la labor de descompresión se puede usar también la variante gunzip.

gunzip

Equivale a gzip -d, y por tanto, se usa y admite los mismos comandos que gzip.

bzip2

Comprime ficheros usando el algoritmo de Burrows-Wheeler. Los ficheros comprimidos suelen marcarse con la extensión .bz2.

Su forma de funcionamiento y sintaxis son análogos a los de gzip con lo que no requiere explicaciones adicionales.

bunzip2

Equivale a bzip2 -d, y por tanto, se usa y admite los mismos comandos que bzip2.

xz

Comprime ficheros usando el algoritmo LZMA. Los ficheros comprimidos suelen marcarse con la extensión .xz.

Su forma de funcionamiento y sintáxis son análogos a los de gzip y bzip2 con lo que no requiere explicaciones adicionales.

unxz

Equivale a xz -d, y por tanto, se usa y admite los mismos comandos que xz.

2.8.1.2. Otros compresores

Aunque lo habitual es usar alguno de los tres compresores arriba descritos, junto a tar para poder crear un único fichero contenedor, en linux están disponibles comandos para poder tratar ficheros zip (para comprimir zip y para descomprimir unzip), ficheros rar (para comprimir rar y para descomprimir command:unrar, aunque ambos están en la rama non-free) o ficheros 7z (mediante el comando p7zip). No obstante, no es habitual usarlos y, por lo general, su uso se limita a descomprimir ficheros que nos hayan podido proporcionar terceras personas en estos formatos.

Por supuesto, también existen herramientas gráficas, que permiten de forma sencilla elegir el formato entre todos los disponibles.

Notas al pie

1

Linux, por ejemplo, que tradicionalmente ofrecía descargar las fuentes comprimidas en formatos gz y bz2, dejó de ofrecer este último formato en a finales de diciembre de 2013, para pasar a ofrecerlas en gz y xz.