Compresores en Linux: gzip, bzip2 y xz – Diferencias y Uso
Para una mayor eficiencia y economía de medios de backup, existe la función de compresión de datos.
Básicamente existen tres compresores de datos Linux con algoritmos de compresión de datos diferentes. El primero en aparecer fue GZIP, luego BZIP2 y por último XZ.
Compresor de datos gzip y gunzip
El primer compresor de datos muy utilizado es gzip. Utiliza un algoritmo de comprensión llamado Lempel-Ziv. Esta técnica encuentra caracteres duplicados en los datos de entrada. La segunda ocurrencia de los caracteres es reemplazada por punteros a la referencia anterior, en la forma de pares de distancia y longitud. Al comprimir un archivo, gzip agrega el sufijo .gz.
Para comprimir un archivo:
$ gzip arquivo
Para descomprimir un archivo:
$ gzip –d arquivo.gz
O
$ gunzip arquivo.gz
Compresor de datos bzip2 y bunzip2
El compresor bzip2 compacta archivos utilizando el algoritmo de Burrows-Wheeler y Huffman. Esta técnica opera en bloques de datos grandes. Mientras mayor sea el tamaño de los bloques, mayor es la tasa de compresión alcanzada. Es considerado mejor que los compresores convencionales de datos. Al comprimir un archivo, bzip2 agrega el sufijo .bz2.
Para comprimir un archivo:
$ bzip2 arquivo
Para descomprimir un archivo:
$ bzip2 –d arquivo.bz2
O
$ bunzip2 arquivo.bz2
Existen algunos casos donde el archivo comprimido puede quedar más grande que el archivo original. Esto puede ocurrir si el algoritmo utilizado no encuentra ocurrencias para hacer la compresión de los datos y el encabezado del compresor es agregado al archivo original.
Compresor de datos xz y unxz
Además, tenemos el compresor de datos xz, que utiliza un algoritmo similar a gzip. Produce archivos con la extensión .xz o .lzma.
Para comprimir un archivo:
$ xz arquivo
Para descomprimir:
$ xz --decompress arquivo.xz
O
$ unxz arquivo.xz
Para que tengas una idea de la diferencia entre los tres compresores gzip, bzip2 y xz, mira el ejemplo comparativo del paquete TAR de un archivo de backup de un sitio:
site.tar 9,8M # arquivo sem compactaçãosite.tar.gz 2,6M # arquivo compactado com gzipsite.tar.bz2 2,4M # arquivo compactado com bzipsite.tar.xz 2,1M # arquivo compactado com xz
Juntando archivos con tarball
Los archivos tarball son empaquetados de archivos y directorios que mantienen la estructura de directorios y archivos original en un archivo tar, con la posibilidad de compresión de datos.
El comando para empaquetar archivos y directorios es tar. El nombre de este comando proviene de "Tape-ARchive". Lee archivos y directorios y los guarda en cinta o archivo.
Junto con los datos, guarda información importante como la última modificación, permisos de acceso y otros. Esto lo hace capaz de restaurar el estado original de los datos.
Las opciones del comando tar no son tan opcionales. Recibe al menos dos argumentos:
- opciones: Indica lo que tar debe hacer
- [fuente]: Si tar se utiliza para hacer backup, este parámetro puede ser un archivo, un dispositivo, un directorio a ser copiado;
- [destino]: Si el comando se utiliza para backup, esta opción especificará el destino para los datos. Puede ser un archivo tarball o un dispositivo. Si se utiliza para restaurar los archivos, especificará un archivo tarball y un dispositivo de donde se extraerán los datos.
Primero se debe elegir lo que tar debe hacer a través de las opciones:
- -c: Crea un nuevo archivo .tar;
- -u: Agrega más archivos al archivo .tar solo si estos son nuevos o modificados;
- -r: Agrega los archivos especificados al final del archivo .tar;
- -g: Crea un backup incremental;
- -t: Lista el contenido de un archivo .tar;
- -x: Extrae los archivos del archivo .tar;
También tiene opciones auxiliares:
- -j: Utiliza bzip2 para comprimir y descomprimir los archivos .tar.bz2;
- -J: Utiliza xz para comprimir y descomprimir los archivos .tar.xz
- -z: Utiliza gzip para comprimir y descomprimir los archivos .tar.gz;
- -v: Lista todos los archivos procesados;
- -f: Indica que el destino es un archivo en disco, y no una unidad de cinta magnética;
Las opciones de tar pueden combinarse en un único parámetro como "cvzf".
Por ser un comando que originalmente fue hecho para leer/grabar en cinta, para crear un archivamiento tar o leer un archivamiento tar en disco, se debe usar siempre la opción "f".
Ejemplos:
Para guardar un determinado directorio /var/lib/mysql en un archivo /var/backup/mysql.tar.gz:
$ tar cvzf /var/backup/mysql.tar.gz /var/mysql
Para extraer el mismo paquete:
$ tar xvzf /var/backup/mysql.tar.gz –C /
Podrás abrir el contenido de un archivo tarball de dos formas:
$ gzip –d arquivo.tar.gz
El comando gzip descomprime el arquivo.tar.gz y elimina el sufijo .gz.
$ tar xvf arquivo.tar
El utilitario tar extrae el contenido del paquete.
También podemos utilizar formas más simples:
$ tar xvzf arquivo.tar.gz
O
$ gzip –dc arquivo.tar.gz | tar xv
Si el archivo está comprimido con bzip2, debe ser descomprimido por bunzip2 o usar la opción –d de bzip2.
$ bzip2 –d arquivo.tar.bz2
O
$ bunzip2 arquivo.tar.bz2
Y
$ tar xvf arquivo.tar
En el caso de los archivos comprimidos con xz, se puede utilizar el comando xz:
$ xz -d linux.tar.xz
Seguido de:
$ tar xvf linux.tar
O
$ tar xvJf linux.tar.xz
En el entorno gráfico, puedes descomprimir y extraer un archivo tarball sin mucho esfuerzo, simplemente haciendo clic en el archivo. De esta forma, Linux invocará en segundo plano el compresor de datos apropiado, junto con tar para extraer el paquete de datos en el directorio actual.
Ve la comparación entre la compresión realizada por los compresores gzip, bzip2 y xz y un archivo tar sin compresión:
$ ls -1shS linux*
895M linux.tar
165M linux.tar.gz
126M linux.tar.bz2
105M linux-5.4.3.tar.xz
Para el examen, se recomienda memorizar la siguiente tabla:
| Extensión | Compresor utilizado | Opción del Tar |
| .tar.gz | Gzip | $ tar xvzf archivo.tar.gz |
| .tar.bz2 | Bzip2 | $ tar xvjf archivo.tar.bz2 |
| .tar.xz | Xz | $ tar xvJf archivo.tar.xz |
Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la inscripción aquí. Si ya tienes una cuenta, o quieres crear una, simplemente ingresa o crea tu usuario aquí.
¿Te gustó? Comparte
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.