Compactadores de Archivos en Linux: tar, gzip, bzip2, zip y xz
Los compresores de archivos en Linux se usan en el día a día de los administradores.
Conocé los comandos tar y compresores gzip, bgzip y xz para combinar y comprimir archivos en Linux. Esencial para cualquier administrador.
Comando tar
Uso:
$ tar [ctxurgjzpvfNCMF] [destino] [fuente]
El nombre de este comando proviene de "Tape-ARchive". Él 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.
El comando tar recibe dos argumentos. Son estos:
[fuente]: Si se usa tar para hacer backup, este parámetro puede ser un archivo, un dispositivo, un directorio a copiar;
[destino]: Si el comando se usa para backup, esta opción especificará el destino para los datos. Puede ser un archivo tarball o un dispositivo. Si se usa para restaurar los archivos, especificará un archivo tarball y un dispositivo de donde se extraerán los datos.
Las opciones más frecuentes son:
- -c: Crea un nuevo archivo .tar;
- -t: Lista el contenido de un archivo .tar;
- -x: Extrae los archivos de 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;
- -j: Usa bzip2 para comprimir y descomprimir los archivos .tar;
- -z: Usa gzip para comprimir y descomprimir los archivos .tar;
- -p: Extrae los archivos con los mismos permisos de creación;
- -v: Lista todos los archivos procesados;
- -f: Indica que el destino es un archivo en disco, y no una unidad de cinta magnética;
- -N: fecha Guarda solo los archivos más nuevos que la fecha especificada;
- -C: Especifica la ubicación donde se extraerán los datos;
- -M: Habilita múltiples volúmenes;
- -T: Crea un paquete .tar a partir de una lista de archivos y directorios.
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 /
Para crear un backup del directorio /home/documentos en múltiples diskettes:
# tar cvMf /dev/fd0 /home/documentos
Para crear un paquete a partir de una lista de directorios en un archivo y con fecha superior a 01/05/2004.
# cat listabackup.txt
/etc
/var/lib/mysql
/usr/local/apache2/conf
# tar czPf backup-010504.tar.gz -N 01/05/2004 -T listabackup.txt
Para guardar el directorio /etc en cinta SCSI en el dispositivo /dev/st0:
# tar cvz /dev/st0 /etc
Para listar el contenido de una cinta SCSI en el dispositivo /dev/st0:
# tar tfz /dev/st0
Para extraer solo el archivo de contraseñas:
# tar xvfz /dev/st0 etc/passwd
Las operaciones de backup de datos pueden automatizarse a través de scripts shell y programarse en cron, requiriéndose solo del administrador el cambio de medios y revisión de los informes.
Los Compresores de Datos
Comando gzip y gunzip
Para una mayor eficiencia y economía de medios de backup, existe el recurso de compresión de datos.
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 se reemplaza por punteros a la referencia anterior, en forma de pares de distancia y longitud. Al comprimir un archivo, gzip agrega el sufijo .gz.
Para comprimir un archivo:
$ gzip archivo
Para descomprimir un archivo:
$ gzip –d archivo.gz
O
$ gunzip archivo.gz
Comando bzip2 y bunzip2
El compresor bzip2 comprime archivos utilizando el algoritmo de Burrows-Wheeler y Huffman. Esta técnica opera en bloques de datos grandes. Cuanto mayor el tamaño de los bloques, mayor 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 archivo
Para descomprimir un archivo:
$ bzip2 –d archivo.bz2
O
$ bunzip2 archivo.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 se agrega al archivo original.
Comando xz
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 archivo
Para descomprimir:
$ xz --decompress archivo.xz
Para que tengas una idea de la diferencia entre los tres compresores gzip, bzip2 y xz, mirá el ejemplo comparativo del paquete TAR de un archivo de backup de un sitio:
site.tar 9,8M # archivo sin compresión;
site.tar.gz 2,6M # archivo comprimido con gzip
site.tar.bz2 2,4M # archivo comprimido con bzip
site.tar.xz 2,1M # archivo comprimido con xz
Conclusión
Si necesitás hacer backup de datos en Linux, es imprescindible conocer los comandos tar, gzip, bzip y xz.
Aprendé mucho más sobre Linux en nuestro curso online. Podés hacer la inscripción acá. Si ya tenés una cuenta, o querés crear una, simplemente entrá o creá tu usuario acá.
¿Te gustó? Compartí
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.