Skip to content

02 Compresion y Archivado de Archivos

Alan edited this page Jun 13, 2026 · 1 revision

Compresión y Archivado de Archivos

Tabla de Contenidos

Compresión de Archivos

La compresión de archivos consiste en convertir un archivo en uno más pequeño al eliminar datos redundantes. Estos datos son reestructurados de tal manera que ocupan menos espacio. Sin embargo, estos archivos comprimidos no pueden ser utilizados como sus versiones originales, sino que solo sirven como archivos de respaldo. Si se requiere utilizar el archivo original, es necesario descomprimir el archivo.

Important

En archivos pequeños, la compresión suele ser pequeña, pero en archivos grandes, suele ser significativa.

Tip

Evita sobrecomprimir: al comprimir archivos binarios (e.g., archivos multimedia) con utilidades como gzip, puedes estar comprimiendo un archivo que ya viene comprimido (optimizado), lo cual puede resultar incluso en un archivo más grande que el original, por ejemplo:

admin@server:~$ gzip imagen.jpg

Si quieres reducir el espacio de archivos binarios, mejor utiliza utilidades de optimización específicas. Estas reducen el tamaño aplicando técnicas como eliminación de redundancia y metadatos, sin cambiar el formato del archivo.

Compresión con gzip

Qué es gzip

GNU zip (gzip) es una utilidad de compresión que reduce el tamaño de los archivos seleccionados.

Los archivos comprimidos con gzip comúnmente tienen la extensión .gz.

Sintaxis de gzip

gzip [ opciones ] { archivo ... }

Comandos de gzip

Comando Descripción Ejemplo
gzip archivo... Comprime archivos en formato GZIP, reemplazando el archivo original. gzip documento.txt
gzip -d archivo...
gunzip archivo...
Descomprime archivos en formato GZIP. gzip -d documento.txt.gz
gzip -# archivo... Comprime con nivel específico (1-9). Predeterminado: 6. gzip -9 documento.txt
gzip --fast archivo... Comprime con el nivel más rápido (equivalente a -1). gzip --fast documento.txt
gzip --best archivo... Comprime con el nivel más alto (equivalente a -9). gzip --best documento.txt
gzip -k archivo... Conserva el archivo original tras la compresión. gzip -k documento.txt
gzip -r directorio Comprime recursivamente todos los archivos en el directorio especificado. gzip -r /home/user/docs
gzip -t archivo... Verifica la integridad de los archivos comprimidos. gzip -t documento.txt.gz
gzip -l archivo... Lista información sobre los archivos comprimidos. gzip -l documento.txt.gz
gzip -v archivo... Muestra el nombre y el porcentaje de reducción de cada archivo comprimido o descomprimido. gzip -dv documento.tar.gz
gzip -v documento.txt

Compresión con bzip2

Qué es bzip2

bzip2 es una utilidad de compresión de código abierto que reduce el tamaño de los archivos utilizando el algoritmo Burrows-Wheeler (BWT) junto con la codificación Huffman. Generalmente ofrece una mayor tasa de compresión que gzip, aunque es más lenta.

Los archivos comprimidos con bzip2 comúnmente tienen la extensión .bz2.

Sintaxis de bzip2

bzip2 [ opciones ] { archivo ... }

Comandos de bzip2

Comando Descripción Ejemplo
bzip2 archivo... Comprime archivos en formato BZIP2, reemplazando el archivo original. bzip2 archivo.log
bzip2 -d archivo...
bunzip2 archivo...
Descomprime archivos en formato BZIP2. bzip2 -d archivo.log.bz2
bzip2 -# archivo... Comprime con nivel específico (1-9). Predeterminado: 9. bzip2 -1 archivo.log
bzip2 --fast archivo... Comprime con el nivel más rápido (equivalente a -1). bzip2 --fast archivo.log
bzip2 --best archivo... Comprime con el nivel más alto (equivalente a -9). bzip2 --best archivo.log
bzip2 -k archivo... Conserva el archivo original tras la compresión. bzip2 -k archivo.log
bzip2 -t archivo... Verifica la integridad de los archivos comprimidos. bzip2 -t archivo.log.bz2
bzip2 -v archivo... Muestra el ratio de compresión de cada archivo procesado. Repetir la opción incrementa la verbosidad. bzip2 -dv archivo.log.bz2
bzip2 -v archivo.log

Note

bzip2 no cuenta con opciones -l ni -r equivalentes a las de gzip. Para listar el contenido de un archivo comprimido con bzip2, se utiliza tar -tjf en combinación. Para compresión recursiva, se puede combinar con find (e.g., find . -type f -exec bzip2 {} \;).

Compresión con xz

Qué es xz

xz es una utilidad de compresión de propósito general que utiliza el algoritmo LZMA2. Ofrece la mayor tasa de compresión entre las utilidades comunes, a costa de mayor tiempo de procesamiento y uso de memoria. Es el formato estándar para la distribución de código fuente en muchos proyectos de software libre (e.g., el kernel de Linux).

Los archivos comprimidos con xz comúnmente tienen la extensión .xz.

Sintaxis de xz

xz [ opciones ] { archivo ... }

Comandos de xz

Comando Descripción Ejemplo
xz archivo... Comprime archivos en formato XZ, reemplazando el archivo original. xz database.sql
xz -d archivo...
unxz archivo...
Descomprime archivos en formato XZ. xz -d database.sql.xz
xz -# archivo... Comprime con nivel específico (0-9). Predeterminado: 6. xz -9 database.sql
xz --fast archivo... Comprime con el nivel más rápido (equivalente a -0). xz --fast database.sql
xz --best archivo... Comprime con el nivel más alto (equivalente a -9). xz --best database.sql
xz -k archivo... Conserva el archivo original tras la compresión. xz -k database.sql
xz -t archivo... Verifica la integridad de los archivos comprimidos. xz -t database.sql.xz
xz -l archivo... Lista información sobre los archivos comprimidos. xz -l database.sql.xz
xz -v archivo... Muestra el nombre y el porcentaje de reducción de cada archivo procesado. xz -dv database.sql.xz
xz -v database.sql

Note

xz no cuenta con una opción -r equivalente a la de gzip. Para compresión recursiva, se puede combinar con find (e.g., find . -type f -exec xz {} \;).

Más Utilidades de Compresión

Comando Descripción Ejemplo
pigz archivo... Comprime archivos en formato GZIP de forma paralela (más rápida). pigz -9 database.sql
pigz -d archivo... Descomprime archivos en formato pigz/gzip. pigz -d database.sql.gz
pigz -k archivo... Conserva el archivo original tras la compresión. pigz -k database.sql
pbzip2 archivo... Comprime archivos en formato BZIP2 de forma paralela (más rápida). pbzip2 -9 largefile.txt
pbzip2 -d archivo... Descomprime archivos en formato pbzip2/bzip2. pbzip2 -d largefile.txt.bz2
pbzip2 -k archivo... Conserva el archivo original tras la compresión. pbzip2 -k largefile.txt
compress archivo... Comprime archivos en formato .Z utilizando el algoritmo LZW. compress datos.txt
uncompress archivo... Descomprime archivos en formato .Z. uncompress datos.txt.Z
lzop archivo... Comprime archivos utilizando el algoritmo LZO (alta velocidad). lzop -9 video.mp4
lz4 archivo... Comprime archivos con LZ4 (compresión ultrarrápida). lz4 archivo.bin
zstd archivo... Comprime archivos con Zstandard (balance entre velocidad y ratio). zstd -19 backup.img

Archivado de Archivos

El archivado de archivos consiste en empaquetar una serie de archivos y directorios dentro de un único archivo. El archivado por sí solo no comprime los archivos. Al desempaquetar el archivo, se recuperan los archivos originales.

Archivado con tar

Qué es tar

La utilidad GNU tar o simplemente tar es una utilidad de archivado (archiving) que permite crear y operar con archivos (archives) en formato TAR. Un archivo TAR frecuentemente tiene la extensión .tar.

La utilidad tar se puede integrar con utilidades de compresión para comprimir archivos TAR o desempaquetar archivos TAR comprimidos (e.g., GZIP).

Note

tar proviene de Tape ARchive. Por muchos años, los respaldos se solían mantener en tapes (cintas) debido a que eran menos costosos que otros tipos de almacenamiento.

Sintaxis de tar

tar { A|c|d|r|t|u|x } [ opciones ] { archivo-tar } { archivo|directorio ...}

Donde archivo-tar puede ser un archivo TAR comprimido en otro formato, por ejemplo GZIP (e.g., archivo.tar.gz).

Note

Por razones de compatibilidad históricas, tar es una de las utilidades que pueden aceptar algunas opciones sin el guión -. Los siguientes comandos son equivalentes:

admin@server:~$ tar -cf archivo.tar archivo1 carpeta1
admin@server:~$ tar cf archivo.tar archivo1 carpeta1

Comandos de Archivado de tar

Comando Descripción Ejemplo
tar -cf archivo.tar archivo... Crea un archivo TAR. tar -cf backup.tar Documents/
tar -xf archivo.tar Extrae todos los archivos de un archivo TAR. tar -xf backup.tar
tar -xf archivo.tar archivo... Extrae archivos específicos de un archivo TAR. tar -xf backup.tar file1.txt
tar -xf archivo.tar -C directorio Extrae el contenido en el directorio especificado. tar -xf backup.tar -C /tmp/
tar -tf archivo.tar Lista el contenido del archivo TAR. tar -tf backup.tar
tar -rf archivo.tar archivo... Añade archivos a un archivo TAR existente. tar -rf backup.tar newfile.txt
tar -uf archivo.tar archivo... Actualiza archivos en el archivo TAR. tar -uf backup.tar Documents/
tar -df archivo.tar Compara el contenido del archivo TAR con el sistema de archivos. tar -df backup.tar
tar --delete -f archivo.tar archivo... Elimina archivos del archivo TAR. tar --delete -f backup.tar oldfile.txt
Opciones Adicionales de tar
Opción Descripción Ejemplo
-v Activa el modo verboso (muestra los archivos procesados). tar -cvf backup.tar Documents/
-p Conserva los permisos originales de los archivos. tar -cpf backup.tar /etc/
--exclude Excluye los archivos o patrones especificados. tar -cf backup.tar --exclude='*.tmp' Documents/
--wildcards Permite el uso de comodines al extraer archivos. tar -xf backup.tar --wildcards '*.txt'

Comandos de Archivado y Compresión de tar

Comando Descripción Ejemplo
tar -czf archivo.tar.gz archivo... Crea un archivo TAR y lo comprime con gzip. tar -czf proyecto.tar.gz src/
tar -cjf archivo.tar.bz2 archivo... Crea un archivo TAR y lo comprime con bzip2. tar -cjf proyecto.tar.bz2 src/
tar -cJf archivo.tar.xz archivo... Crea un archivo TAR y lo comprime con xz. tar -cJf proyecto.tar.xz src/
tar -xzf archivo.tar.gz Extrae un archivo TAR comprimido con gzip. tar -xzf proyecto.tar.gz
tar -xjf archivo.tar.bz2 Extrae un archivo TAR comprimido con bzip2. tar -xjf proyecto.tar.bz2
tar -xJf archivo.tar.xz Extrae un archivo TAR comprimido con xz. tar -xJf proyecto.tar.xz
tar -tzf archivo.tar.gz Lista el contenido de un archivo TAR comprimido con gzip. tar -tzf proyecto.tar.gz
tar -tjf archivo.tar.bz2 Lista el contenido de un archivo TAR comprimido con bzip2. tar -tjf proyecto.tar.bz2
tar -tJf archivo.tar.xz Lista el contenido de un archivo TAR comprimido con xz. tar -tJf proyecto.tar.xz
tar -I "gzip -9" -cf archivo.tar.gz archivo... Crea un archivo TAR y lo comprime con gzip en nivel 9. tar -I "gzip -9" -cf backup.tar.gz /etc/
tar -I pigz -cf archivo.tar.gz archivo... Crea un archivo TAR y lo comprime con pigz (paralelo). tar -I pigz -cf backup.tar.gz Documents/
tar -I pbzip2 -cf archivo.tar.bz2 archivo... Crea un archivo TAR y lo comprime con pbzip2 (paralelo). tar -I pbzip2 -cf backup.tar.bz2 src/
Opciones de Compresión de tar
Opción Descripción
-a, --auto-compress Determina la utilidad de compresión a partir de la extensión del archivo.
-I, --use-compress-program=COMMAND Filtra los datos a través de la utilidad especificada en COMMAND.
-j, --bzip2 Filtra el archivo a través de bzip2.
-J, --xz Filtra el archivo a través de xz.
--lzip Filtra el archivo a través de lzip.
--lzma Filtra el archivo a través de lzma.
--lzop Filtra el archivo a través de lzop.
-z, --gzip Filtra el archivo a través de gzip.
-Z, --compress Filtra el archivo a través de compress.
--zstd Filtra el archivo a través de zstd.

Archivado y Compresión

Note

Respecto a la utilidad tar, véase la sección: Comandos de Archivado y Compresión de tar

Archivado y Compresión con zip

Qué es zip

La utilidad zip es una utilidad de archivado (archiving) con compresión integrada que permite crear y operar con archivos (archives) en formato ZIP. Un archivo ZIP frecuentemente tiene la extensión .zip.

Sintaxis de zip

zip [ opciones ] { archivo-zip } { archivo|directorio ... }

Comandos de zip

Comando Descripción Ejemplo
zip archivo.zip archivo... Crea un archivo ZIP con los archivos especificados. zip docs.zip *.txt
zip -r archivo.zip directorio/ Crea un archivo ZIP de forma recursiva desde un directorio. zip -r proyecto.zip src/
zip -# archivo.zip archivo... Comprime con nivel específico (0-9). zip -9 docs.zip *.txt
zip -e archivo.zip archivo... Crea un archivo ZIP protegido con contraseña. zip -e secure.zip datos.txt
zip -u archivo.zip archivo... Actualiza archivos en el archivo ZIP. zip -u docs.zip nuevo.txt
zip -d archivo.zip archivo... Elimina archivos del archivo ZIP. zip -d docs.zip viejo.txt

Comandos de unzip

Comando Descripción Ejemplo
unzip archivo.zip Extrae todos los archivos del archivo ZIP. unzip proyecto.zip
unzip archivo.zip archivo... Extrae archivos específicos del archivo ZIP. unzip docs.zip readme.txt
unzip -d directorio archivo.zip Extrae el contenido en el directorio especificado. unzip -d /tmp/ docs.zip
unzip -l archivo.zip Lista el contenido del archivo ZIP sin extraer. unzip -l proyecto.zip
unzip -t archivo.zip Verifica la integridad del archivo ZIP. unzip -t proyecto.zip

Archivado y Compresión con 7-Zip

Qué es 7-Zip

7-Zip (invocado como 7z en Linux) es una utilidad de archivado con compresión integrada de código abierto. Soporta múltiples formatos tanto para creación (e.g., .7z, .zip, .tar) como para extracción (e.g., .rar, .gz, .iso). Su formato nativo .7z utiliza el algoritmo LZMA/LZMA2 y ofrece una de las mayores tasas de compresión disponibles.

Sintaxis de 7-Zip

7z { a|d|e|l|t|u|x } { archivo.7z } [ archivo|directorio ... ] [ opciones ]

Comandos de 7-Zip

Comando Descripción Ejemplo
7z a archivo.7z archivo... Crea un archivo 7Z con los archivos especificados. 7z a backup.7z *.txt
7z a -r archivo.7z directorio/ Crea un archivo 7Z de forma recursiva desde un directorio. 7z a -r proyecto.7z src/
7z a -mx=# archivo.7z archivo... Comprime con nivel específico (0-9). 7z a -mx=9 docs.7z *.pdf
7z a -p archivo.7z archivo... Crea un archivo 7Z protegido con contraseña. 7z a -p secure.7z datos.txt
7z a -t formato archivo... Crea un archivo en el formato especificado. 7z a -tzip docs.zip *.txt
7z x archivo.7z Extrae todos los archivos conservando la estructura de directorios. 7z x proyecto.7z
7z e archivo.7z Extrae todos los archivos en el directorio actual. 7z e backup.7z
7z x archivo.7z -o directorio Extrae el contenido en el directorio especificado. 7z x backup.7z -o/tmp/
7z l archivo.7z Lista el contenido del archivo 7Z. 7z l proyecto.7z
7z t archivo.7z Verifica la integridad del archivo 7Z. 7z t backup.7z
7z u archivo.7z archivo... Actualiza archivos en el archivo 7Z. 7z u docs.7z nuevo.txt
7z d archivo.7z archivo... Elimina archivos del archivo 7Z. 7z d docs.7z viejo.txt

Archivado y Compresión con rar

Qué es rar

RAR (Roshal ARchive) es un formato de archivado con compresión propietario desarrollado por Eugene Roshal. En Linux, se distribuyen dos utilidades: rar (creación y extracción, requiere licencia comercial) y unrar (solo extracción, versión libre). Utiliza su propio algoritmo de compresión y soporta funcionalidades como archivos multi-volumen y recuperación de datos ante corrupción.

Sintaxis de rar

rar { a|d|e|l|t|u|x } [ opciones ] { archivo.rar } [ archivo|directorio ... ]

Comandos de rar

Comando Descripción Ejemplo
rar a archivo.rar archivo... Crea un archivo RAR con los archivos especificados. rar a backup.rar *.txt
rar a -r archivo.rar directorio/ Crea un archivo RAR de forma recursiva desde un directorio. rar a -r proyecto.rar src/
rar a -m# archivo.rar archivo... Comprime con nivel específico (0-5). rar a -m5 docs.rar *.pdf
rar a -hp archivo.rar archivo... Crea un archivo RAR protegido con contraseña. rar a -hp secure.rar datos.txt
rar x archivo.rar
unrar x archivo.rar
Extrae todos los archivos conservando la estructura de directorios. rar x proyecto.rar
rar e archivo.rar
unrar e archivo.rar
Extrae todos los archivos en el directorio actual. rar e backup.rar
rar x archivo.rar directorio/ Extrae el contenido en el directorio especificado. rar x backup.rar /tmp/
rar l archivo.rar
unrar l archivo.rar
Lista el contenido del archivo RAR. rar l proyecto.rar
rar t archivo.rar
unrar t archivo.rar
Verifica la integridad del archivo RAR. rar t backup.rar
rar u archivo.rar archivo... Actualiza archivos en el archivo RAR. rar u docs.rar nuevo.txt
rar d archivo.rar archivo... Elimina archivos del archivo RAR. rar d docs.rar viejo.txt

Note

unrar es la versión libre para extraer archivos RAR, mientras que rar requiere licencia comercial para crear archivos.

Resumen

Comparación de Formatos de Compresión

Formato Velocidad Ratio Uso recomendado
gzip Rápida Bueno Uso general, compatibilidad
pigz Muy rápida Bueno gzip paralelo, sistemas multi-núcleo
bzip2 Lenta Mejor Archivos grandes, mejor compresión
pbzip2 Rápida Mejor bzip2 paralelo, sistemas multi-núcleo
xz Muy lenta Excelente Distribución de software
lz4 Muy rápida Regular Compresión en tiempo real
zstd Rápida Muy bueno Balance moderno velocidad/ratio
7z Lenta Excelente Máxima compresión, múltiples formatos
rar Media Muy bueno Archivos multimedia, recuperación
zip Rápida Bueno Compatibilidad universal

Conclusión

En Linux existen múltiples utilidades de archivado y compresión. Es poco probable que sea necesario utilizar todas las mencionadas anteriormente. Las más recomendadas para aprender son tar, gzip, bzip2 y xz, ya que corresponden a los formatos más extendidos en entornos Linux.

Utilidades como 7z, rar y zip son más comunes en entornos Windows. En Linux, generalmente se utilizan al trabajar con archivos descargados en dichos formatos, dado que los programas de Windows no suelen incluir soporte nativo para formatos como gzip, bzip2 o xz.

No es necesario memorizar cada comando y sus opciones. Se recomienda aprender las opciones esenciales y consultar la documentación oficial (e.g., -h, --help, man pages) cuando sea necesario.

Referencias

Introducción a los Sistemas Operativos

Introducción a Linux

Licencias de Software

Archivos y Directorios

Introducción a la CLI

Manipulación de Archivos y Directorios

Documentación y Exploración de Comandos

Redirección

Búsqueda de Archivos y Texto

Editores de Texto de Terminal

Gestión de Usuarios y Grupos

Propiedad y Permisos

Herramientas Esenciales

Hardware

Apéndice

Clone this wiki locally