GZIP(1)

NOMBRE
gzip, gunzip, zcat - comprimen o expanden ficheros

SINOPSIS
gzip [ -acdfhlLnNrtvV19 ] [-S sufijo] [ nombre ... ]
gunzip [ -acfhlLnNrtvV ] [-S sufijo] [ nombre ... ]
zcat [ -fhLV ] [ nombre ... ]

DESCRIPCIÓN
El programa gzip reduce el tamaño de los ficheros dados mediante el algoritmo de compresión de Lempel-Ziv (LZ77). Cuando es posible, cada fichero se reemplaza por otro con la extensión .gz, manteniéndose los mismos permisos, propietarios y tiempos de modificación. (La extensión predeterminada es -gz para VMS, y z para MSDOS, la FAT de OS/2, la FAT de Windows NT, y Atari.) Si no se da ningún fichero, o si un nombre de fichero es "-", se lee de la entrada estándar, que se comprime y se manda el resultado a la salida estándar. El programa gzip sólo intentará comprimir ficheros regulares. En particular, no hará nada con enlaces simbólicos.

Si el nombre del fichero comprimido es demasiado largo para su sistema de ficheros, gzip lo trunca. Gzip intenta truncar solamente las partes del nombre del fichero que sean de más de 3 caracteres. (El delimitador de las partes es el punto.) Si el nombre consiste solamente en partes pequeñas, se truncan las mayores. Por ejemplo, si los nombres de ficheros están limitados a 14 caracteres, gzip.msdos.exe se comprime a gzi.msd.exe.gz. Los nombres no se truncan en sistemas que no tienen un límite respecto a la longitud de nombres de ficheros.

Por omisión, gzip mantiene el nombre de fichero original, así como los tiempos de acceso, etc., en el fichero comprimido. Estos datos se emplean cuando se descomprime el fichero con la opción -N. Esto es útil cuando el nombre de fichero comprimido se truncó o cuando los tiempos no se preservaron después de una transferencia.

Los ficheros comprimidos pueden restaurarse a su forma original mediante gzip -d o gunzip o zcat. Si el nombre original guardado en el fichero comprimido no es adecuado para su sistema de ficheros, se construye un nuevo nombre a partir del original de forma que sea válido para este sistema de ficheros.

El programa gunzip toma una lista de ficheros en su línea de órdenes y reemplaza cada uno de ellos cuyo nombre acabe en .gz, -gz, .z, -z, _z o .Z, y que empiece con el número mágico correcto, con un fichero descomprimido sin la extensión original. gunzip también reconoce las extensiones especiales .tgz y .taz como abreviaturas de .tar.gz y de .tar.Z respectivamente. Cuando comprime, gzip emplea la extensión .tgz si es necesario en vez de truncar el nombre de un fichero con una extensión .tar.

gunzip puede en la actualidad descomprimir ficheros creados por gzip, zip, compress, compress -H o pack. La detección del formato de la entrada es automática. Cuando se utilicen los dos primeros formatos, gunzip prueba un CRC de 32 bits. Para pack, gunzip comprueba la longitud sin comprimir. El formato estándar de compress no fue diseñado para permitir pruebas de consistencia. Sin embargo, gunzip es capaz a veces de detectar un fichero .Z malo. Si obtenemos un error cuando descomprimimos un fichero .Z, no debemos suponer que el fichero .Z es correcto simplemente porque el uncompress estándar no protesta. Esto significa generalmente que el uncompress estándar no comprueba su entrada, y genera basura en la salida sin preocuparse de más. El formato del compress -H de SCO (método de compresión lzh) no incluye un CRC pero también permite algunas pruebas de consistencia.

Los ficheros creados por zip pueden descomprimirse con gzip sólo si tienen un solo miembro comprimido con el método de `deflación'. Esta característica se añadió solamente para ayudar en la conversión de ficheros .tar.zip al formato .tar.gz. Para extraer ficheros zip con varios miembros, emplee unzip en vez de gunzip.

zcat es idéntico a gunzip -c. (En algunos sistemas, zcat puede haberse instalado como gzcat para preservar el enlace original a compress.) zcat descomprime tanto una lista de ficheros en la línea de órdenes o su entrada estándar, y escribe los datos descomprimidos en la salida estándar. zcat descomprimirá ficheros que tengan el número mágico correcto tanto si tienen un sufijo .gz como si no.

Gzip emplea el algoritmo de Lempel-Zip usado en zip y PKZIP. La cantidad de compresión obtenida depende del tamaño de la entrada y de la distribución de subcadenas de caracteres comunes. Típicamente, texto en inglés o código fuente se reduce en un porcentaje del 60 al 70%. La commpresión es por lo general mucho mejor que la que se obtiene con LZW (que es lo que se usa en compress), la codificación de Huffman (lo que se usa en pack), o el código de Huffman adaptativo (usado en compact).

La compresión siempre se realiza, aunque el fichero comprimido resulte algo mayor que el original. La expansión en el peor caso es de unos pocos bytes para la cabecera del fichero gzip, más 5 bytes cada bloque de 32 kB, o una relación de expansión del 0,015% para ficheros grandes. Observe que el número de bloques de disco usados realmente casi nunca se incrementa. gzip preserva el modo, propietarios y tiempos de los ficheros, cuando comprime o cuando descomprime.

OPCIONES

-a --ascii
    Modo de texto ASCII: convierte los saltos de línea según los convenios locales. Esta opción se admite solamente en algunos sistemas no Unix. Para MS-DOS, CR LF se convierten a LF cuando se comprime, y LF se convierte a CR LF al descomprimir.

-c --stdout --to-stdout
    Escribe la salida en la salida estándar; deja los ficheros originales tal cuales. Si hay varios ficheros de entrada, la salida consiste en una secuencia de miembros comprimidos independientemente. Para conseguir una mejor compresión, concatene todos los ficheros de entrada antes de comprimirlos.

-d --decompress --uncompress
    Descomprime.

-f --force
    Fuerza la compresión o descompresión incluso si el fichero tiene varios enlaces o si el fichero correspondiente ya existe, o si los datos comprimidos se leen de, o se escriben en, una terminal. Si los datos de entrada no están en un formato reconocido por gzip, y si se ha dado también la opción --stdout, copia los datos de entrada a la salida estándar sin cambiarlos: entonces zcat se comporta como cat. Si no se da la opción -f y no se está en segundo plano, gzip pide verificación si un fichero existente está a punto de sobreescribirse.

-h --help
    Muestra una pantalla de ayuda y acaba.

-l --list
    Para cada fichero comprimido, lista los siguientes campos:

        compressed: el tamaño del fichero comprimido
        uncompr: el tamaño del fichero descomprimido
        ratio: relación de compresión (0.0% si no se conoce)
        uncompressed_name: nombre del fichero descomprimido

    El tamaño descomprimido se da como -1 para ficheros que no estén en formato de gzip, como los ficheros comprimidos .Z. Para obtener el tamaño descomprimido para un fichero así, puede emplearse:

        zcat file.Z | wc -c

    Si además se da la opción --verbose, se muestran asimismo los siguientes campos:

        method: método de compresión
        crc: el CRC de 32 bits de los datos descomprimidos
        date & time: tiempos del fichero descomprimido

    Los métodos de compresión aceptados actualmente son el hinchado o deflación, compresión, lzh (compress -H de SCO) y empaquetado. El CRC se da como ffffffff para un fichero que no esté en el formato de gzip.

    Con --name, el nombre descomprimido, fecha y hora, son los guardados en el fichero comprimido si está presente.

    Con --verbose, también se muestran los totales de tamaño y relación de compresión para todos los ficheros, a menos que algunos tamaños se desconozcan. Con --quiet, el título y los totales no se muestran.

-L --license
    Muestra la licencia de uso de gzip y acaba.

-n --no-name
    Cuando comprime, no guarda de forma predeterminada el nombre original del fichero y sus tiempos de acceso y demás. (El nombre original siempre se guarda si ha de truncarse.) Cuando descomprime, no restaura el nombre de fichero original si está presente (quita solamente el sufijo de gzip del nombre de fichero comprimido) y no restaura las marcas de tiempo originales si están presentes (las copia del fichero comprimido). Esta opción está activa por omisión cuando descomprime.

-N --name
    Al comprimir, siempre guarda el nombre de fichero original y las marcas de tiempo; este comportamiento es el predeterminado. Al descomprimir, restaura el nombre de fichero original y las marcas de tiempo si están presentes. Esta opción es útil en sistemas que tienen un límite en la longitud del nombre del fichero o cuando las marcas de tiempo se han perdido después de una transferencia de fichero.

-q --quiet
    Suprime todos los avisos.

-r --recursive
    Recorre la estructura de directorios recursivamente. Si cualquiera de los nombres de fichero especificados en la línea de órdenes son directorios, gzip descenderá en el directorio y comprimirá todos los ficheros que encuentre allí (o los descomprimirá en el caso de gunzip ).

-S .suf --suffix .suf
    Emplea el sufijo .suf en vez de .gz. Se puede dar cualquier sufijo, pero los distintos a .z y .gz deben evitarse para que no haya confusiones cuando se transfieran los ficheros a otros sistemas. Un sufijo nulo fuerza a gunzip a intentar la descompresión en todos los ficheros dados sin importar el sufijo, como en

        gunzip -S "" * (*.* para MSDOS)

    Versiones anteriores de gzip empleaban como sufijo .z. Esto se cambió para evitar conflictos con pack(1).

-t --test
    Test. Comprueba la integridad del fichero comprimido.

-v --verbose
    Prolijo. Muestra el nombre y porcentaje de reducción para cada fichero comprimido o descomprimido.

-V --version
    Versión. Muestra el número de versión y las opciones de compilación y luego acaba.

-# --fast --best
    Regula la velocidad de la compresión según el dígito especificado #, donde -1 ó --fast indica el método de compresión más rápido (lo que implica una menor compresión) y -9 ó --best indica el método de compresión más lento (lo que implica la mejor compresión). EL nivel de compresión predeterminado es -6 (esto es, dirigido a una mayor compresión a expensas de la velocidad).

EMPLEO AVANZADO
Varios ficheros comprimidos pueden concatenarse. En este caso, gunzip extraerá todos los miembros de una vez. Por ejemplo:

      gzip -c fich1 > fuu.gz
      gzip -c fich2 >> fuu.gz

Entonces
      gunzip -c fuu

es equivalente a

      cat fich1 fich2

En caso de daño a un miembro de un fichero .gz, los otros aún pueden recuperarse (si se quita el miembro dañado). Sin embargo, puede obtenerse una mejor compresión comprimiendo todos los miembros de una vez:

      cat fich1 fich2 | gzip > fuu.gz

comprime mejor que

      gzip -c fich1 fich2 > fuu.gz

Si quiere recomprimir ficheros concatenados para obtener una mejor compresión, haga:

      gzip -cd viejo.gz | gzip > nuevo.gz

Si un fichero comprimido consta de varios miembros, el tamaño descomprimido y el CRC que dan la opción --list se aplica al último miembro solamente. Si necesita el tamaño descomprimido para todos los miembros, puede usar:

      gzip -cd fich.gz | wc -c

Si desea crear un solo fichero archivo con varios miembros de manera que éstos puedan extraerse más tarde independientemente, utilice un archivador como tar o zip. El tar de GNU admite la opción -z para llamar transparentemente a gzip. gzip está diseñado como un complemento de tar, no como un sustituto.

ENTORNO
La variable de entorno GZIP puede guardar un conjunto de opciones predeterminadas para gzip. Estas opciones se interpretan antes y pueden cambiarse o anularse mediante parámetros explícitos de la línea de órdenes. Por ejemplo:
      para sh: GZIP="-8v --name"; export GZIP
      para csh: setenv GZIP "-8v --name"
      para MSDOS: set GZIP=-8v --name

En Vax/VMS, el nombre de la variable de entorno es GZIP_OPT, para evitar un conflicto con el símbolo establecido para la llamada al programa.

VÉASE TAMBIÉN
znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1), pack(1), compact(1)

DIAGNÓSTICOS
El estado de salida es normalmente 0; si ocurre un error, el estado de salida es 1. Si ocurre un aviso, es 2.

Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
Se han dado opciones no válidas en la línea de órdenes.
fichero: not in gzip format
El fichero que se le ha pasado a gunzip no estaba comprimido.
fichero: Corrupt input. Use zcat to recover some data.
El fichero comprimido está dañado. Se pueden recuperar los datos hasta donde estaba el fallo con
zcat fichero > recuperado
fichero: compressed with xx bits, can only handle yy bits
Fichero ha sido comprimido (con LZW) por un programa que ha podido tratar con más bits que con los que puede el código de descompresión en esta máquina. Recomprima el fichero con gzip, que comprime mejor y usa menos memoria.
fichero: already has .gz suffix -- no change
Se supone que el fichero ya ha sido comprimido. Renombre el fichero e inténtelo de nuevo.
file already exists; do you wish to overwrite (y or n)?
Responda "y" si quiere que el fichero de salida sea reemplazado; "n" si no.
gunzip: corrupt input
Se ha detectado una violación de segmento SIGSEGV, que normalmente significa que el fichero de entrada se ha corrompido.
xx.x%
Porcentaje de la entrada que se ha ganado en la compresión. (Relevante solamente para -v y -l.)
-- not a regular file or directory: ignored
Cuando el fichero de entrada no es un fichero regular ni un directorio, (esto es, por ejemplo un enlace simbólico, zócalo, FIFO, dispositivo), se deja inalterado.
-- has xx other links: unchanged
El fichero de entrada tiene enlaces; se deja intacto. Vea ln(1) para más información. Emplee la opción -f para forzar la compresión de ficheros con varios enlaces.

ADVERTENCIAS
Cuando se escriben datos comprimidos en una cinta, generalmente es necesario rellenar la salida con ceros hasta un límite de bloque. Cuando los datos se leen y el bloque entero se pasa a gunzip para la descompresión, gunzip detecta que hay basura extra al final de los datos comprimidos y emite de forma predeterminada un aviso. Para suprimirlo, emplee la opción --quiet. Esta opción puede ponerse en la variable de entorno GZIP como en:
  para sh: GZIP="-q" tar -xfz --block-compress /dev/rst0
  para csh: (setenv GZIP -q; tar -xfz --block-compress /dev/rst0)

En el ejemplo anterior, gzip se llama implícitamente con la opción -z del tar de GNU. Asegúrese de que se utiliza el mismo tamaño de bloque (la opción -b de tar) para leer y para escribir datos comprimidos en cintas. (Este ejemplo supone que se está usando la versión de tar de GNU.)

FALLOS
La opción --list informa de tamaños incorrectos si exceden de 2 GB. La opción --list da como tamaño -1 y como CRC ffffffff si el fichero comprimido está en un medio que no admite acceso directo.

En algunos casos raros, la opción --best da peor compresión que el nivel predeterminado (-6). En algunos ficheros altamente redundantes, compress comprime mejor que gzip.