gzip: comprimir archivos en Linux, descomprimir gzip y usar gunzip y zcat

Entorno de pruebaFamilia RHELAlmaLinux 9.8Cuenta rootVerificado el 2026-11-05
Comandos de compresión y archivadogzipgunzipzcatUbicación/usr/bin/gzip
Comprimir archivos en Linux y descomprimir gzip

gzip es el comando de Linux que comprime un solo archivo en un archivo .gz; para descomprimir, añade -d al mismo comando o usa gunzip. En un servidor AlmaLinux 9, un registro de acceso de 31.878 bytes quedó en 4.424 bytes, y al descomprimirlo volvieron el tamaño y la hora de modificación originales.

La salida de abajo se obtuvo en una carpeta de prueba de un servidor AlmaLinux 9.8 con la cuenta root, y las horas están en UTC. Los registros de acceso, las notas y los archivos de configuración son archivos de ejemplo creados para la prueba, y las direcciones IP de los registros también son valores de ejemplo para documentación.

1️⃣ Cómo usar el comando gzip

  • ↪️ Comprimir un archivo y conservar el original (-k)

La carpeta de prueba contiene dos registros de acceso, dos archivos de notas, una carpeta config con archivos de configuración y una carpeta restore vacía.

ls -l
total 88
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log
-rw-r--r-- 1 root root 47748 Oct 27 23:59 access.log-20261027
drwxr-xr-x 2 root root    39 Oct 29 00:19 config
-rw-r--r-- 1 root root    45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root   426 Oct 27 09:10 readme.txt
drwxr-xr-x 2 root root     6 Oct 29 00:19 restore

Si escribes un nombre de archivo después de gzip, ese archivo se convierte en un archivo comprimido con .gz añadido al final del nombre. El comando de abajo comprime access.log y no muestra nada al terminar.

gzip access.log

Después de comprimir, ls -l ya no muestra access.log, solo access.log.gz. El registro de 31.878 bytes pasó a 4.424 bytes, y la hora de modificación sigue siendo la del archivo original.

ls -l access.log access.log.gz
ls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gz

Con -v, gzip muestra para cada archivo el porcentaje de reducción y el nombre del nuevo archivo. El [81.5%] de la línea de readme.txt es cuánto se redujo respecto al tamaño original, y [replaced with] significa que el archivo original se sustituyó por el archivo .gz.

gzip -v readme.txt
readme.txt:	 81.5% -- replaced with readme.txt.gz

Para conservar el archivo original, añade -k. Si comprimes memo.txt con -k, quedan memo.txt y memo.txt.gz uno al lado del otro.

gzip -k memo.txt
ls -l memo.txt memo.txt.gz
-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gz

El memo.txt de 45 bytes incluso creció a 71 bytes tras comprimirlo. Según el manual oficial, gzip comprime aunque el resultado sea mayor que el original, y guarda dentro del archivo comprimido el nombre y la hora del archivo original.

Si indicas varios archivos a la vez, cada uno genera su propio archivo .gz. Al comprimir los dos archivos de configuración de la carpeta config se obtienen dos archivos, app.conf.gz y site.conf.gz.

gzip -v config/app.conf config/site.conf
config/app.conf:	 78.7% -- replaced with config/app.conf.gz
config/site.conf:	 87.7% -- replaced with config/site.conf.gz
ls -l config/
total 8
-rw-r--r-- 1 root root 206 Oct 20 11:00 app.conf.gz
-rw-r--r-- 1 root root  93 Oct 20 11:05 site.conf.gz

2️⃣ Descomprimir gzip

  • ↪️ gzip -d y gunzip, descomprimir en otra carpeta (-c)

Al descomprimir access.log.gz con -d no se muestra nada, vuelve a aparecer access.log y access.log.gz desaparece.

gzip -d access.log.gz
ls -l access.log access.log.gz
ls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log

El access.log recuperado mide 31.878 bytes, y su hora de modificación es la misma que antes de comprimir, Oct 28 23:50.

gunzip hace lo mismo que gzip -d. Si añades -k, descomprime conservando el archivo comprimido, y el [created] de la línea de -v significa que creó un archivo nuevo sin borrar el archivo .gz.

gunzip -kv readme.txt.gz
readme.txt.gz:	 81.5% -- created readme.txt
ls -l readme.txt readme.txt.gz
-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
-rw-r--r-- 1 root root 108 Oct 27 09:10 readme.txt.gz

gzip no tiene una opción para elegir la carpeta de destino, así que para descomprimir en otra carpeta usa -c para enviar el contenido descomprimido a la salida estándar y escribe la ruta del nuevo archivo después de [>]. El comando de abajo descomprime memo.txt.gz en memo.txt dentro de la carpeta restore.

gzip -dc memo.txt.gz > restore/memo.txt
ls -l restore/
total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txt

Al descomprimir con -c, memo.txt.gz se queda tal cual. La hora de modificación del nuevo restore/memo.txt es Oct 29 00:19, cuando se creó el archivo.

3️⃣ Opciones del comando gzip

  • ↪️ -l, -t, nivel de compresión, -r

-l muestra en una línea, sin descomprimir, el tamaño comprimido, el tamaño original, el porcentaje de reducción y el nombre que tendrá el archivo al descomprimirlo. Si vuelves a comprimir access.log con -k y lo compruebas con -l, se ve así.

gzip -k access.log
gzip -l access.log.gz
         compressed        uncompressed  ratio uncompressed_name
               4424               31878  86.2% access.log

Si añades -v, delante aparecen el método de compresión (defla, abreviatura de deflate), el CRC de los datos originales y la fecha y hora del archivo original.

gzip -lv access.log.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla b49b41c4 Oct 28 23:50                4424               31878  86.2% access.log

-t solo comprueba que el archivo comprimido no esté dañado y termina. Si lo usas con -v, aparece [OK] después de cada archivo sin problemas.

gzip -tv access.log.gz
access.log.gz:	 OK

Los números del -1 al -9 indican el nivel de compresión, y según el manual oficial el valor predeterminado es -6. Se comprimió tres veces el mismo access.log con -c y se compararon los tamaños con wc -c.

gzip -c -1 access.log | wc -c
5564
gzip -c -6 access.log | wc -c
4424
gzip -c -9 access.log | wc -c
4164
Nivel de compresiónTamaño .gzRespecto al tamaño original
Archivo original (access.log)31.878 bytes100%
-1 (el más rápido)5.564 bytes17.5%
-6 (predeterminado)4.424 bytes13.9%
-9 (el más pequeño)4.164 bytes13.1%

-9 fue 260 bytes más pequeño que el predeterminado, y -1 fue 1.140 bytes más grande que el predeterminado.

Si escribes solo el nombre de una carpeta, aparece [is a directory -- ignored] y la carpeta se omite.

gunzip config
gzip: config is a directory -- ignored

Para procesar todos los archivos de una carpeta, añade -r. Al descomprimir con gunzip -r la carpeta config, donde se habían comprimido los dos archivos de configuración, los dos archivos se descomprimen uno tras otro.

gunzip -rv config
config/app.conf.gz:	 78.7% -- replaced with config/app.conf
config/site.conf.gz:	 87.7% -- replaced with config/site.conf
ls -l config/
total 8
-rw-r--r-- 1 root root 840 Oct 20 11:00 app.conf
-rw-r--r-- 1 root root 528 Oct 20 11:05 site.conf

-r comprime o descomprime por separado cada archivo de la carpeta y no junta varios archivos en uno. Para convertir una carpeta en un único archivo comprimido, usa el comando tar para empaquetarla y comprimirla a la vez. Al comprimir la carpeta config con tar -czf, la carpeta y los dos archivos quedan dentro de un solo config.tar.gz.

tar -czf config.tar.gz config
tar -tzvf config.tar.gz
drwxr-xr-x root/root         0 2026-10-29 00:19 config/
-rw-r--r-- root/root       840 2026-10-20 11:00 config/app.conf
-rw-r--r-- root/root       528 2026-10-20 11:05 config/site.conf

📌 Opciones principales: resultados de este artículo

OpciónTareaResultado en este artículo
-cEnvía el resultado a la salida estándar y deja el archivo original como estáAl pasar la salida de -dc a restore/memo.txt se creó un memo.txt de 45 bytes
-dDescomprimir (igual que gunzip)access.log.gz desaparece y vuelve access.log de 31878 bytes
-kConserva el archivo original tras comprimir o descomprimirQuedan memo.txt (45 bytes) y memo.txt.gz (71 bytes) uno al lado del otro
-vMuestra el porcentaje de reducción y el nombre del nuevo archivo para cada archivoreadme.txt: 81.5% -- replaced with readme.txt.gz
-lMuestra en lista el tamaño, el porcentaje y el nombre al descomprimir de los archivos comprimidosTamaño comprimido 4424, tamaño original 31878, porcentaje 86.2%, nombre access.log
-tComprueba que el archivo comprimido no esté dañadoCon -tv, access.log.gz: OK, y broken.gz, con el final cortado, da unexpected end of file
-rComprime o descomprime todos los archivos de una carpetaUn solo gunzip -rv config descomprime config/app.conf.gz y config/site.conf.gz
-fSobrescribe sin preguntar aunque exista un archivo con el mismo nombreSe sobrescribe sin preguntar: no queda memo.txt y solo queda memo.txt.gz (71 bytes)
-1 ~ -9Nivel de compresión (-1 el más rápido, -9 el más pequeño, predeterminado -6)Al contar con wc -c la salida comprimida con -1, -6 y -9: 5564, 4424 y 4164

📎 Otras opciones: según el manual oficial

OpciónTarea
-NAl comprimir guarda el nombre y la hora del archivo original (predeterminado al comprimir), y al descomprimir restaura el nombre y la hora guardados
-nAl comprimir no guarda el nombre ni la hora del archivo original, y al descomprimir usa el nombre sin .gz (predeterminado al descomprimir)
-qNo muestra ningún aviso
-S sufijoComprime añadiendo el sufijo indicado en lugar de .gz, y al descomprimir busca primero ese sufijo
--rsyncableComprime de forma que, al sincronizar archivos comprimidos con otro servidor mediante rsync, solo se envíen las partes cambiadas

🔲 Simulador del comando gzip

En el simulador de abajo puedes escribir tú mismo los comandos para comprimir con gzip, descomprimir y ver el contenido con zcat y zgrep.

Simulador del comando gzipgzip 1.12
[root@server work]#
Funciona solo en el navegador y no comprime archivos reales. Los tamaños comprimidos son valores medidos, y el contenido nuevo creado en el simulador usa valores estimados. Con ↑↓ recuperas los comandos anteriores.

4️⃣ Ver el contenido de un archivo gzip

  • ↪️ zcat · zgrep

Los registros antiguos guardados con fecha ocupan menos espacio si los comprimes con gzip. El comando de abajo comprime access.log-20261027, el registro del día anterior.

gzip access.log-20261027

Un registro comprimido se muestra en pantalla con zcat sin descomprimirlo. zcat es el mismo comando que gunzip -c (según el manual oficial), así que el archivo .gz se queda tal cual.

zcat access.log-20261027.gz | head -3
192.0.2.50 - - [27/Oct/2026:00:00:00 +0000] GET / HTTP/1.1 200 15929
192.0.2.54 - - [27/Oct/2026:00:00:07 +0000] GET / HTTP/1.1 200 17699
192.0.2.4 - - [27/Oct/2026:00:00:14 +0000] GET / HTTP/1.1 200 13813

La salida de zcat se puede pasar a otros comandos con una tubería, y al contarlo con wc -l este registro tiene 600 líneas.

zcat access.log-20261027.gz | wc -l
600

Para buscar un texto concreto en un registro comprimido, usa zgrep. Con -c solo aparece el número de líneas que contienen [ 404 ]; para ver las líneas, ejecútalo sin -c.

zgrep -c ' 404 ' access.log-20261027.gz
37
zgrep ' 404 ' access.log-20261027.gz | head -3
192.0.2.23 - - [27/Oct/2026:00:02:06 +0000] GET /old-page-6/ HTTP/1.1 404 229
192.0.2.38 - - [27/Oct/2026:00:04:40 +0000] GET /old-page-2/ HTTP/1.1 404 217
192.0.2.22 - - [27/Oct/2026:00:07:42 +0000] GET /old-page-6/ HTTP/1.1 404 414

Si zcat recibe un archivo sin comprimir, muestra [not in gzip format] y se detiene.

zcat access.log | head -1

gzip: access.log: not in gzip format

zgrep también lee tal cual los archivos sin comprimir, así que puedes buscar a la vez en el registro actual y en los registros antiguos comprimidos. Si indicas dos o más archivos, el nombre del archivo aparece delante del número de líneas.

zgrep -c wp-login.php access.log access.log-20261027.gz
access.log:36
access.log-20261027.gz:52

5️⃣ Errores de gzip

  • ↪️ not in gzip format y unexpected end of file

Si vuelves a comprimir un archivo que ya termina en .gz, aparece [already has .gz suffix -- unchanged] y el archivo se queda igual.

gzip access.log.gz
gzip: access.log.gz already has .gz suffix -- unchanged

Al revés, si descomprimes con -d un archivo que no termina en .gz, aparece [unknown suffix -- ignored].

gzip -d memo.txt
gzip: memo.txt: unknown suffix -- ignored

Un archivo que solo se llama .gz pero no se comprimió con gzip termina con [not in gzip format]. Este mensaje apareció al copiar el archivo de texto memo.txt con el nombre notgzip.gz y descomprimirlo.

cp memo.txt notgzip.gz
gzip -d notgzip.gz

gzip: notgzip.gz: not in gzip format

Un archivo .gz con el final cortado, por ejemplo por una descarga interrumpida, termina con [unexpected end of file]. Este es el resultado de comprobar con -t broken.gz, que conservó solo los primeros 2.000 bytes de un registro antiguo comprimido.

head -c 2000 access.log-20261027.gz > broken.gz
gzip -t broken.gz

gzip: broken.gz: unexpected end of file

Incluso de un archivo cortado, zcat puede sacar el contenido hasta el punto del corte. De las 600 líneas del registro quedaron 162 en restore/broken.log, y el manual oficial también aconseja usar zcat para rescatar la primera parte de un archivo comprimido dañado.

zcat broken.gz > restore/broken.log
wc -l restore/broken.log

gzip: broken.gz: unexpected end of file
162 restore/broken.log

Si ya existe un archivo con el mismo nombre que el .gz que se va a crear, gzip pregunta si quieres sobrescribirlo. Si escribes n, termina con [not overwritten] sin cambiar nada.

gzip memo.txt
gzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
	not overwritten

Con -f, gzip sobrescribe directamente sin preguntar. Como no se añadió -k, memo.txt desaparece y solo queda memo.txt.gz.

gzip -f memo.txt
ls -l memo.txt memo.txt.gz
ls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gz

Los mensajes de error que salieron al trabajar con la compresión y lo que conviene comprobar después son estos.

SalidaSignificadoQué revisar después
already has .gz suffix -- unchangedEl archivo ya termina en .gz, así que no se vuelve a comprimirSi escribiste el nombre del archivo original que quieres comprimir
unknown suffix -- ignoredSe intentó descomprimir un archivo que no termina en .gzEl nombre del archivo .gz con ls
not in gzip formatSe llama .gz pero no se comprimió con gzipEl formato real (zip, tar) y el comando que le corresponde
unexpected end of fileEl final del archivo comprimido está cortadoComparar el tamaño con el original y volver a descargar · rescatar la primera parte con zcat
already exists; do you wish to overwriteYa existe un archivo con el mismo nombre que el que se va a creary o -f si se puede sobrescribir · -c con otro nombre para conservarlo
is a directory -- ignoredSe escribió el nombre de una carpeta en lugar de un archivo-r para los archivos de una carpeta · tar para juntarlos en uno

🔢 FAQ & contenido recomendado

Tras juntar la carpeta config en x.tar con tar, comprimirlo con gzip -v y descomprimirlo con gunzip -v, solo se quitó el .gz y quedó un x.tar de 10.240 bytes. Para sacar los archivos empaquetados hay que extraerlo una vez más con tar. Al volver a comprimir x.tar.gz y extraerlo con tar -xzf en la carpeta restore/t, salieron de una vez la carpeta config y los dos archivos de configuración.

Se comprimió dos veces en cada nivel un archivo de 28.648.800 bytes formado por el mismo registro de acceso unido 600 veces. -1 tardó unos 0,3 segundos y dio 4.821.317 bytes, el predeterminado -6 unos 0,65 segundos y 3.625.500 bytes, y -9 unos 2,5 segundos y 3.376.224 bytes. -9 fue un 7 % más pequeño que -6, pero tardó casi cuatro veces más.

gzip guarda el nombre del archivo original dentro del .gz al comprimir. Tras copiar readme.txt.gz a la carpeta restore como backup-1.gz, gzip -lN mostró el nombre guardado readme.txt, y gunzip -N creó restore/readme.txt. Sin -N, el nombre es el del archivo sin .gz (según el manual oficial).

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Demuestra que eres humano: 6   +   3   =