
En los sistemas UNIX el formato tar se usa para almacenar múltiples archivos y carpetas en un único archivo sin compresión. Por lo que cuando se crea el archivo no se consigue ningún ahorro de espacio respecto a los originales. Siendo necesario para ello comprimir el archivo tar con un compresor. Tarea que se puede indicar desde el propio programa tar, pudiendo indicar como opción el formato de compresión que se desea usar. Cada uno de los formatos tiene sus ventajas y desventajas, unos pueden ser rápidos con una compresión aceptable mientras que otros más lentos pueden conseguir archivos más pequeños. Veamos las diferencias de rendimiento que se pueden obtener al comprimir archivos con Gzip, Bzip2 y XZ.
Compresión de archivos con tar con Gzip, Bzip2 y XZ
Cuando se desea crear un archivo tar con el programa del mismo nombre se puede indicar como opción el archivo de compresión. Así para crear un archivo tar con compresión Gzip se puede escribir en la termina un comando como el siguiente
tar -czf nombre-archivo.tar.gz /ruta/a/carpeta
Con el que se creará un archivo nombre-archivo.tar.gz
con el contenido de la carpeta /ruta/a/carpeta
. Las opciones -cxf
indicar a tar lo siguiente
-c
: crear un archivo-z
: comprimir el archivo tar con Gzip-f
: permite indicar el nombre del archivo
Para comprimir con otros formatos solamten se deberá cambiar la opción -z
por la adecuada. En el caso de Bzip2 la opción sería -j
, por los que el comando quedaría de la siguiente manera

tar -cjf nombre-archivo.tar.bz2 /ruta/a/carpeta
Si lo que se desea es usar el formato de compresión XZ se deberá cambiar la opción por -J
. Así el comando sería el siguiente
tar -cJf nombre-archivo.tar.bz2 /ruta/a/carpeta
Compresión del archivo tar con Gzip, Bzip2 y XZ
Para evaluar el rendimiento de compresión de estos archivos he usado un proyecto de Node, en concreto tslane que se explica en esta serie de entradas. He creado un archivo tar sin comprimir y otros tres con cada uno de los comandos que se han exiliado en la sección anterior. El tamaño de los archivos se muestra a continuación junto con el tamaño que ocupan los archivos comprimidos respecto al original:
- tar: 190 Mb
- Gzip: 30 Mb (15%)
- Bzip2: 21 Mb (11%)
- XZ: 17 Mb (8,9%)
En este caso, un proyecto Node con miles de archivos de texto, se ha conseguido compresiones entre un 15% y 8,9% dependiendo del formato. Un ahorro considerable a la hora tanto de almacenar como enviar los datos. En base al espacio ahorrado se puede ver que la mejor opción es ZX. Pero si se tiene en cuenta el tiempo de compresión puede que no sea así. El tiempo que ha tardado, en segundos, cada uno de los archivos en generarse ha sido:
- tar: 5,853
- Gzip: 8,991
- Bzip2: 14,516
- XZ: 48,503
Como se puede ver el tiempo necesario para obtener el archivo también ha crecido a medida que se ahorra espacio. Por eso puede que la mejor opción no sea XZ ya que este tarda más de cinco veces el tiempo que tarda en generarse el Gzip.
Conclusiones
En base a esto, ¿qué formato debería utilizar para comprimir los archivos tar? La respuesta dependerá del uso del archivo. Si el archivo se va a publicar en una web para que los descarguen cientos o miles de usuarios, usar XZ permitirá obtener los archivos más pequeños y por lo tanto ahorros en ancho de banda. Por otro lado, si solamente se desea una pequeña compresión para enviar una única vez, posiblemente Gzip sea la mejor opción. Con este formato se consigue una buena compresión casi en el mismo tiempo que se crea un tar. Bzip2 queda como una solución de compromiso, obtiene una mejor compresión que Gzip en tiempo inferior al de XZ.
Deja una respuesta