Skip to content

✉️ Discover TinkMail

Powerful email solutions for personal and business use

Get Started Free

Cómo comprimir y descomprimir archivos en un entorno Linux

La diferencia entre empaquetar y comprimir

Empaquetar y comprimir son conceptos diferentes. Empaquetar es combinar múltiples archivos/carpetas en un solo archivo, mientras que comprimir es reducir el tamaño del archivo mediante algoritmos de compresión. Es importante tener en cuenta que empaquetar no significa reducir el tamaño, y comprimir no significa fusionar archivos. Aunque la mayoría de las veces estamos acostumbrados a "empaquetar y comprimir" y a veces no necesitamos distinguir entre ellos, entender la diferencia puede ayudarte a comprender mejor los comandos en tu sistema Linux.

Empaquetar y desempaquetar (tar)

Solo empaquetar

Usa el comando tar para empaquetar múltiples archivos/carpetas en un solo archivo.

sh
tar -cvf archive.tar file1 file2 file3

donde archive.tar es el archivo empaquetado, file1, file2 y file3 son los archivos/carpetas a empaquetar.

Para cada archivo empaquetado, la salida será.

sh
a file1
a file2
a file3

Empaquetar y comprimir

El comando tar también integra la compresión, ya sea utilizando los algoritmos de compresión gzip o bzip2, con los siguientes parámetros -z y -j respectivamente.

sh
# Usar compresión gzip con .gz después del nombre del archivo
tar -zcvf archive.tar.gz file1 file2 file3

# Usar compresión gzip con .tgz como sufijo del nombre de archivo
tar -zcvf archive.tgz file1 file2 file3

# Comprimir usando bzip2 con .bz2 después del nombre del archivo
tar -jcvf archive.tar.bz2 file1 file2 file3

# Comprimir con bzip2, usando .tbz2 como sufijo del nombre de archivo
tar -jcvf archive.tbz2 file1 file2 file3

Desempaquetar

sh
tar -xvf archive.tar

Si necesitas desempaquetar en un directorio específico, añade el parámetro -C.

sh
tar -xvf archive.tar -C /path/to/destination/directory

Si hay compresión, añade los argumentos correspondientes -z o -j:

sh
# Descomprimir el archivo gzip
tar -zxvf archive.tar.gz

# Descomprimir el archivo bzip2
tar -jxvf archive.tar.bz2

Comprimir y descomprimir archivos

Compresión gzip

El comando gzip se utiliza para comprimir un archivo. Vale la pena señalar que sobrescribe el archivo original, es decir, el archivo original desaparece después de ser comprimido con el comando gzip.

sh
## el archivo desaparecerá y se creará un nuevo file.gz
gzip file

Aplicar gzip directamente a un directorio no tiene efecto, porque gzip solo puede comprimir archivos, no directorios. Sin embargo, todos los archivos de un directorio pueden comprimirse recursivamente utilizando el argumento -r:

sh
# Todos los archivos en el directorio dirname se comprimen, cada archivo genera un archivo .gz correspondiente, y el archivo original desaparece
gzip dirname

Descompresión gzip

Descomprimir un solo archivo, usando el parámetro -d.

sh
### Descomprime el archivo file.gz, creando un nuevo archivo
gzip -d file.gz

Añadir el argumento -r permite la descompresión recursiva contra directorios, similar a la recursión en la compresión, que también descomprime todos los archivos en un directorio:

sh
# Descomprime todos los archivos comprimidos con gzip en dirname y subdirectorios
gzip -dr dirname

Compresión zip

zip puede hacer tanto empaquetado como compresión.

Para empaquetar y comprimir.

sh
zip archive.zip file1 file2 file3

Salida.

sh
adding: file1 (stored 0%)
adding: file2 (stored 0%)
adding: file3 (stored 0%)

Si tienes directorios para comprimir juntos, necesitas añadir el parámetro -r, y puedes usar el parámetro -q para desactivar la salida:

sh
zip -qr archive.zip dirname

Descomprimir zip

Para descomprimir directamente desde el directorio actual.

sh
unzip archive.zip

Si quieres descomprimir en un directorio específico, usa el parámetro -d, además el parámetro -o puede sobrescribir archivos existentes sin preguntar:

sh
unzip -d /path/to/destination/directory -o archive.zip

Resumen rápido

sufijoempaquetar/comprimirdesempaquetar/descomprimir
.tartar -cvf archive.tar file1 file2tar -xvf archive.tar -C /dest/path
.tar.gz/.tgztar -zcvf archive.tar file1 file2tar -zxvf archive.tar -C /dest/path
.tar.bz2/.tbz2tar -jcvf archive.tar file1 file2tar -jxvf archive.tar -C /dest/path
.gzgzip filegzip -d file.gz
.zipzip -r archive.zip file1 file2unzip -d /dest/path -o archive.zip