Comandos gzip gunzip para Linux
Los comandos gzip y gunzip de Linux se utilizan para comprimir y descomprimir archivos utilizando el algoritmo de compresión gzip. Su nombre proviene de la combinación de GNU + zip. Algo más rápido que el comando bzip2 pero con menor poder de compresión.
gzip [opciones] archivo
Debemos tener en cuenta que la compresión por defecto genera un archivo de extensión .gz y elimina el archivo original.
Para comprimir varios archivos debemos hacer uso previamente del comando tar para crear una «agrupación» con los archivos. Lo mismo ocurre si queremos comprimir un directorio.
En este ejemplo vamos a comprimir un fichero llamado lorem.txt. Este comando generará el archivo lorem.txt.gz y eliminará a lorem.txt.
gzip lorem.txt
Podemos observar la información que nos devuelve la terminal si después de la compresión ejecutamos el comando file de Linux.

Para descomprimir este archivo y recuperar el formato original utilizamos el comando gunzip. El equivalente al comando gunzip es gzip -d.
gunzip lorem.txt.gz
Vamos a comprobar mediante un listado ls -l el peso del archivo que hemos comprimido y después realizaremos otra vez lo mismo para ver el peso del archivo descomprimido.
Se puede apreciar que el peso del archivo comprimido es menor al del archivo sin comprimir. La compresión funciona 🙂

Opciones con gzip gunzip
Cada comando de Linux tiene diferentes opciones para optimizar y potenciar el propio comando. Es recomendable ver las que existen desde la terminal con el comando de ayuda man gzip o man gunzip.
Ahora veremos algunas opciones interesantes:
- -d: descomprime el archivo en lugar de comprimirlo. Es el equivalente al comando gunzip.
- -c: escribe la salida comprimida o sin comprimir sin eliminar el archivo original. Útil para redirigir la salida a otro archivo o comando.
- -k: mantiene el archivo original después de la compresión, creando un nuevo archivo con extensión .gz
Veamos un ejemplo con las diferencias de usar las opciones -c y -k con el comando gzip.
Opción -c para gzip
Primero vamos a ver la opción para redirigir la salida comprimida del archivo hola.txt a un archivo nuevo llamado info_comprimida.txt.
gzip -c hola.txt > info_comprimida.txt
Podemos ver que este comando no comprime el archivo hola.txt, el archivo sigue manteniendo su nombre y extensión. Lo que realmente hace es que crea un archivo nuevo llamado info_comprimida.txt que en su interior almacena la información de la compresión de hola.txt.
Haciendo uso del comando cat de Linux mostramos el contenido del nuevo archivo.

De la misma forma pero usando gunzip -c podríamos redirigir la salida descomprimida a un archivo.
gunzip -c hola.txt.gz > info_descomprimida.txt
Opción -k para gzip
Ahora vamos a ver un ejemplo haciendo uso del comando gzip -k con el mismo archivo de antes.
Con esta opción conseguimos crear un archivo comprimido llamado hola.txt.gz sin que nuestro archivo original hola.txt sea eliminado.
gzip -k hola.txt