lunes, 23 de mayo de 2016

gzip

El programa gzip se usa para comprimir uno o más archivos. Cuando lo ejecutamos, reemplaza el archivo original por una versión comprimida del original. El programa correspondiente gunzip se usa para restaurar archivos comprimidos a su forma original descomprimida. Aquí tenemos un ejemplo:

[me@linuxbox ~]$ ls -l /etc > foo.txt
[me@linuxbox ~]$ ls -l foo.*
-rw-r--r-- 1 me me 15738 2008-10-14 07:15 foo.txt
[me@linuxbox ~]$ gzip foo.txt
[me@linuxbox ~]$ ls -l foo.*
-rw-r--r-- 1 me me 3230 2008-10-14 07:15 foo.txt.gz
[me@linuxbox ~]$ gunzip foo.txt
[me@linuxbox ~]$ ls -l foo.*
-rw-r--r-- 1 me me 15738 2008-10-14 07:15 foo.txt

En este ejemplo, creamos un archivo de texto llamado foo.txt desde un listado de directorio. A continuación, ejecutamos gzip, que reemplaza el archivo original con una versión comprimida llamada foo.txt.gz. En el listado del directorio de foo.*, vemos que el archivo original ha sido reemplazado con la versión comprimida, y la versión comprimida tiene más o menos la quinta parte del tamaño de la original. También podemos ver que el archivo comprimido tiene los mismos permisos y datos de tiempo que el original.

A continuación, ejecutamos el programa gunzip para descomprimir el archivo. Tras ello, podemos ver que la versión comprimida del archivo ha sido reemplazada por la original, de nuevo con los permisos y datos de tiempo conservados.

gzip tiene muchas opciones. Aquí tenemos unas pocas:

Tabla 18-1: Opciones de gzip
Opción Descripción
-c Escribe la salida en la salida estándar y mantiene los archivos originales. También puede especificarse con –-stdout y –-to-stdout.
-d Descomprime. Hace que gzip actúe como gunzip. También puede indicarse con –-decompress o –-uncompress.
-f Fuerza la compresión incluso si ya existe una versión comprimida del archivo original. También puede indicarse con --force.
-h Muestra información de uso. También puede especificarse con --help.
-l Lista las estadísticas de compresión para cada archivo comprimido. También puede especificarse con --list.
-r Si uno o más argumentos de la línea de comandos son directorios, comprime recursivamente los archivos incluidos en ellos. También podría especificarse con --recursive.
-t Prueba la integridad de un archivo comprimido. También podría especificarse con --test.
-v Muestra mensajes mientras comprime. También puede indicarse con --verbose.
-number Establece la cantidad de compresión. number es un entero en el rango entre 1 (más rápido, menos comprimido) y 9 (más lento, más comprimido). Los valores 1 y 9 también pueden expresarse como --fast y --best, respectivamente. El valor por defecto es 6.

Volviendo a nuestro ejemplo anterior:

[me@linuxbox ~]$ gzip foo.txt
[me@linuxbox ~]$ gzip -tv foo.txt.gz
foo.txt.gz: OK
[me@linuxbox ~]$ gzip -d foo.txt.gz

Aquí, hemos reemplazado el archivo foo.txt con una versión comprimida llamada foo.txt.gz. A continuación, hemos probado la integridad de la versión comprimida, usando las opciones -t y -v. Finalmente hemos descomprimido el archivo de vuelta a su forma original.

gzip también puede usarse de formas interesantes vía entrada y salida estándar:

[me@linuxbox ~]$ ls -l /etc | gzip > foo.txt.gz

Este comando crea una versión comprimida de un listado de directorios.

El programa gunzip, que descomprime archivos gzip, asume que los nombres de archivo terminan con la extensión .gz, así que no es necesario especificarla, siempre que el nombre especificado no entre en conflicto con un archivo descomprimido existente.

[me@linuxbox ~]$ gunzip foo.txt

Si nuestro objetivo fuera sólo ver el contenido de un archivo de texto comprimido, podríamos hacer ésto:

[me@linuxbox ~]$ gunzip -c foo.txt | less

Alternativamente, hay un programa proporcionado con gzip, llamado zcat, que es equivalente a gunzip con la opción -c. Puede usarse como el comando cat en archivos comprimidos con gzip:

[me@linuxbox ~]$ zcat foo.txt.gz | less

Consejo: También existe el programa zless. Realiza la misma función que la tubería anterior.

No hay comentarios:

Publicar un comentario