2.9.1. Compresión¶
Los compresores más habituales en sistemas Linux son:
- gzip (extensión asociada: .gz),
que se basa (al igual que el formato zip muy habitual en sistemas Windows) en la versión DEFLATE del algoritmo LZ77.
- bzip2 (extensión asociada: .bz2 o .bzip2.),
que frente al anterior obtiene unos ratios de compresión mucho mayores a costa de penalizar mucho los tiempos de compresión y la descompresión.
- xz (extensión asociada: .xz),
más moderno y que, comprimiendo aún más que bzp2, logra reducir enormemente sus tiempos de descompresión. Su extensión asociada habitual es .xz. Prácticamente, ha desplazado por completo a bzip2 en los usos a los que se destinaba este formato[1].
- zstd (extensión asociada: .zst),
desarrollado por Facebook, se basa en la versión LZ4 de LZ77. Su propósito es competir en los mismos usos que gzip[2].
Para facilitar su uso, las cuatro órdenes tiene una interfaz de uso común.
2.9.1.1. Compresiones habituales¶
- gzip
Su sintaxis básica, análoga a la del resto de compresores es la siguiente:
gzip [<opciones>] [archivo1 [archivo2 ...]]
y su modo de proceder, también. La orden:
$ gzip archivo.txt
Convierte el archivo original en el archivo comprimido
archivo.txt.gz
. Obsérvese, pues, que el original se pierde. Si pasamos varios archivos:$ gzip archivo1.txt archivo2.txt
Obtendremos los archivos
archivo1.txt.gz
yarchivo2.txt.gz
comprimidos por separado, ya que la fusión de varios archivos 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 archivo contenedor para poder incluir distintos archivos 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 archivo original como cambiar el nombre del archivo resultante:
$ gzip -c archivo.txt > archivo.comprimido.txt.gz
La opción es obligada cuando no se comprime el contenido de un archivo, 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 archivo comprimido:
$ gzip -t frase.txt.gz
-l
:Devuelve el grado de compresión del archivo 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.
- bzip2
Comprime archivos usando el algoritmo de Burrows-Wheeler. Los archivos 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.
- xz
Comprime archivos usando el algoritmo LZMA. Los archivos 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.
- zstd
La diferencia fundamental con el resto de órdenes es que comprime (o descomprime con -d) sin eliminar el original. Por tanto:
$ zstd archivo
creará el archivo
archivo.zst
sin que desaparezcaarchivo
.
- unzstd
Equivale a
unzstd -d
.
2.9.1.2. Otros compresores¶
Aunque lo habitual es usar alguno de los cuatro compresores arriba descritos,
junto a tar para poder crear un único archivo contenedor,
en linux están disponibles comandos para poder tratar archivos zip
(para comprimir zip y para descomprimir unzip), archivos rar
(para comprimir
rar y para descomprimir unrar, aunque
ambos están en la rama non-free) o archivos 7z
(mediante el
comando p7zip). No obstante, no es habitual usarlos
y, por lo general, su uso se limita a descomprimir archivos 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