gzip, gunzip, zcat: comprimir o descomprimir archivos
SINOPSIS
gzip [ -acdfhklLnNrtvV19 ] [-S sufijo] [ nombre ... ]
gunzip [ -acfhklLnNrtvV ] [-S sufijo] [ nombre ... ]
zcat [ -fhLV ] [ nombre ... ]
DESCRIPCIÓN
El comando gzip reduce el tamaño de los archivos especificados utilizando la codificación Lempel-Ziv (LZ77). Siempre que sea posible, cada archivo se reemplaza por uno con la extensión .gz, manteniendo los mismos modos, fechas de acceso y modificación. (La extensión predeterminada es z para MSDOS, OS/2 FAT, Windows NT FAT y Atari). Si no se especifican archivos, o si el nombre de un archivo es "-", la entrada estándar se comprime a la salida estándar. El comando gzip solo intentará comprimir archivos regulares. En particular, ignorará los enlaces simbólicos.
Si el nombre del archivo comprimido es demasiado largo para su sistema de archivos, gzip lo trunca. El comando gzip intenta truncar solo las partes del nombre del archivo que tienen más de 3 caracteres. (Una parte está delimitada por puntos). Si el nombre consta solo de partes pequeñas, se truncan las partes más largas. Por ejemplo, si los nombres de archivo están limitados a 14 caracteres, gzip.msdos.exe se comprime a gzi.msd.exe.gz. Los nombres no se truncan en los sistemas que no tienen un límite en la longitud del nombre del archivo.
De forma predeterminada, gzip guarda el nombre de archivo original y la marca de tiempo en el archivo comprimido. Estos se utilizan al descomprimir el archivo con la opción -N. Esto es útil cuando el nombre del archivo comprimido se ha truncado o cuando la marca de tiempo no se ha conservado después de una transferencia de archivos.
Los archivos comprimidos se pueden restaurar a su forma original utilizando gzip -d o gunzip o zcat. Si el nombre original guardado en el archivo comprimido no es adecuado para su sistema de archivos, se construye un nuevo nombre a partir del original para que sea válido.
gunzip toma una lista de archivos en su línea de comandos y reemplaza cada archivo cuyo nombre termina con .gz,
-gz, .z, -z o _z (sin distinguir mayúsculas de minúsculas) y que comienza con el número mágico correcto con un archivo descomprimido sin la extensión original. gunzip también reconoce las extensiones especiales .tgz
y .taz como abreviaturas de .tar.gz y .tar.Z respectivamente. Al comprimir, gzip utiliza la extensión .tgz
si es necesario en lugar de truncar un archivo con una extensión .tar.
gunzip puede descomprimir actualmente archivos creados por gzip, zip, compress, compress -H o pack. La
detección del formato de entrada es automática. Al utilizar los dos primeros formatos, gunzip comprueba un CRC de 32
bits. Para pack y gunzip, comprueba la longitud descomprimida. El formato de compresión estándar no estaba diseñado para permitir comprobaciones de coherencia. Sin embargo, gunzip a veces puede detectar un archivo .Z
incorrecto. Si obtiene un error al descomprimir un archivo .Z, no asuma que el archivo .Z es correcto solo porque el comando uncompress estándar no se queja. Esto generalmente significa que el comando uncompress estándar no comprueba su entrada y genera alegremente una salida incorrecta. El formato SCO compress -H (método de compresión lzh) no incluye un CRC, pero también permite algunas comprobaciones de coherencia.
Los archivos creados por zip se pueden descomprimir con gzip solo si tienen un único miembro comprimido con el método 'deflation'. Esta función está pensada para ayudar a convertir archivos tar.zip al formato tar.gz. Para extraer un archivo zip con un solo miembro, use un comando como 'gunzip <foo.zip' o 'gunzip -S .zip foo.zip'. Para extraer archivos zip con varios miembros, use unzip en lugar de gunzip.
El comando zcat es idéntico a gunzip -c. (En algunos sistemas, zcat puede instalarse como gzcat para preservar el enlace original a compress). zcat descomprime una lista de archivos en la línea de comandos o su entrada estándar y escribe los datos descomprimidos en la salida estándar. zcat descomprimirá los archivos que tengan el número mágico correcto, independientemente de si tienen o no la extensión .gz.
El comando gzip utiliza el algoritmo Lempel-Ziv utilizado en zip y PKZIP. La cantidad de compresión obtenida depende del tamaño de la entrada y la distribución de las subcadenas comunes. Típicamente, el texto como el código fuente o el inglés se reduce en un 60-70%. La compresión es generalmente mucho mejor que la lograda por LZW (como se usa en compress), la codificación Huffman (como se usa en pack) o la codificación Huffman adaptativa (compact).
La compresión siempre se realiza, incluso si el archivo comprimido es ligeramente más grande que el original. El peor caso de expansión es de unos pocos bytes para la cabecera del archivo gzip, más 5 bytes por cada bloque de 32 KiB, o una relación de expansión del 0,015% para archivos grandes. El número real de bloques de disco utilizados casi nunca aumenta.
gzip normalmente preserva el modo y la marca de tiempo de modificación de un archivo al comprimir o descomprimir. Si tiene los privilegios adecuados, también preserva el propietario y el grupo del archivo.
OPCIONES
-a --ascii
Modo de texto ASCII: convierte los finales de línea utilizando las convenciones locales. Esta opción solo es compatible con algunos sistemas no Unix. Para MSDOS, CR LF se convierte en LF al comprimir, y LF se convierte en CR LF al descomprimir.
-c --stdout --to-stdout
Escribe la salida en la salida estándar; mantiene los archivos originales sin cambios. Si hay varios archivos de entrada, la salida consiste en una secuencia de miembros comprimidos de forma independiente. Para obtener una mejor compresión, concatene todos los archivos de entrada antes de comprimirlos.
-d --decompress --uncompress
Descomprime.
-f --force
Fuerza la compresión o descompresión incluso si el archivo tiene varios enlaces o el archivo correspondiente ya existe, o si los datos comprimidos se leen o escriben desde o hacia un terminal.
Si los datos de entrada no están en un formato reconocido por gzip, y si también se da la opción --stdout, copia los datos de entrada sin cambios a la salida estándar: hace que zcat se comporte como cat. Si no se da -f, y cuando no se ejecuta en segundo plano, gzip solicita confirmar si se debe sobrescribir un archivo existente.
-h --help
Muestra una pantalla de ayuda y sale.
-k --keep
Mantiene (no elimina) los archivos de entrada durante la compresión o descompresión.
-l --list
Para cada archivo comprimido, muestra los siguientes campos:
tamaño comprimido: tamaño del archivo comprimido
tamaño descomprimido: tamaño del archivo descomprimido
ratio: relación de compresión (0.0% si es desconocido)
nombre_descomprimido: nombre del archivo descomprimido
El tamaño descomprimido se indica como -1 para los archivos que no están en formato gzip, como los archivos comprimidos .Z. Para obtener el tamaño descomprimido de dicho archivo, puede usar:
zcat archivo.Z | wc -c
En combinación con la opción --verbose, también se muestran los siguientes campos:
método: método de compresión
crc: el CRC de 32 bits de los datos descomprimidos
fecha y hora: marca de tiempo para el archivo descomprimido
Los métodos de compresión que se admiten actualmente son deflate, compress, lzh (SCO compress -H) y pack. El crc se indica como ffffffff para un archivo que no está en formato gzip.
Con --name, el nombre y la fecha y hora descomprimidos son los que se almacenan dentro del archivo comprimido si están presentes.
Con --verbose, también se muestran los totales de tamaño y la relación de compresión para todos los archivos, a menos que algunos tamaños sean desconocidos. Con --quiet, no se muestran las líneas de título y totales.
-L --license
Muestra la licencia de gzip y sale.
-n --no-name
Al comprimir, no guarde el nombre y la marca de tiempo originales de forma predeterminada. (El nombre original siempre se guarda si tuvo que truncarse). Al descomprimir, no restaure el nombre original si está presente (elimine solo el sufijo gzip del nombre del archivo comprimido) y no restaure la marca de tiempo original si está presente (cópiela del archivo comprimido). Esta opción es la predeterminada al descomprimir.
-N --name
Al comprimir, guarde siempre el nombre original y guarde la parte de segundos de la marca de tiempo de modificación original si el archivo original es un archivo regular y su marca de tiempo es al menos 1 (1 de enero de 1970 00:00:01 UTC) y es menor que 2**32 (7 de febrero de 2106 06:28:16 UTC, suponiendo que no se cuenten los segundos de salto); esta es la opción predeterminada. Al descomprimir, restaure el nombre y la marca de tiempo guardados si están presentes. Esta opción es útil en los sistemas que tienen un límite en la longitud del nombre del archivo o cuando la marca de tiempo se ha perdido después de una transferencia de archivos.
-q --quiet
Suprime todas las advertencias.
-r --recursive
Recorre la estructura de directorios recursivamente. Si alguno de los nombres de archivo especificados en la línea de comandos son directorios, gzip descenderá al directorio y comprimirá todos los archivos que encuentre allí (o los descomprimirá en el caso de gunzip).
-S .suf --suffix .suf
Cuando se comprime, use el sufijo .suf en lugar de .gz. Se puede especificar cualquier sufijo no vacío, pero se deben evitar los sufijos distintos de .z y .gz para evitar confusiones al transferir archivos a otros sistemas.
Cuando se descomprime, agregue .suf al principio de la lista de sufijos que se van a probar al derivar un nombre de archivo de salida a partir de un nombre de archivo de entrada.
--synchronous
Use la salida sincrónica. Con esta opción, gzip es menos probable que pierda datos durante una falla del sistema, pero puede ser considerablemente más lento.
-t --test
Probar. Verifique la integridad del archivo comprimido y luego salga.
-v --verbose
Detallado. Muestre el nombre y el porcentaje de reducción para cada archivo comprimido o descomprimido.
-V --version
Versión. Muestre el número de versión y las opciones de compilación y luego salga.
-# --fast --best
Regule la velocidad de compresión usando el dígito especificado #, donde -1 o --fast indica el método de compresión más rápido (menos compresión) y -9 o --best indica el método de compresión más lento (mejor compresión). El nivel de compresión predeterminado es -6 (es decir, sesgado hacia una alta compresión a expensas de la velocidad).
--rsyncable
Cuando sincroniza un archivo comprimido entre dos computadoras, esta opción permite que rsync transfiera solo los archivos que se modificaron en el archivo en lugar de todo el archivo. Normalmente, después de realizar un cambio en cualquier archivo del archivo, el algoritmo de compresión puede generar una nueva versión del archivo que no coincida con la versión anterior del archivo. En este caso, rsync transfiere toda la nueva versión del archivo a la computadora remota. Con esta opción, rsync puede transferir solo los archivos modificados, así como una pequeña cantidad de metadatos que son necesarios para actualizar la estructura del archivo en el área que se modificó.
USO AVANZADO
Se pueden concatenar varios archivos comprimidos. En este caso, gunzip extraerá todos los miembros a la vez. Por ejemplo:
gzip -c file1 > foo.gz
gzip -c file2 >> foo.gz
Luego
gunzip -c foo
es equivalente a
cat file1 file2
En caso de daño a uno de los miembros de un archivo .gz, se pueden recuperar otros miembros (si se elimina el miembro dañado). Sin embargo, puede obtener una mejor compresión comprimiendo todos los miembros a la vez:
cat file1 file2 | gzip > foo.gz
comprime mejor que
gzip -c file1 file2 > foo.gz
Si desea volver a comprimir archivos concatenados para obtener una mejor compresión, haga lo siguiente:
gzip -cd old.gz | gzip > new.gz
Si un archivo comprimido consta de varios miembros, el tamaño descomprimido y el CRC informados por la opción --list se aplican solo al último miembro. Si necesita el tamaño descomprimido de todos los miembros, puede usar:
gzip -cd file.gz | wc -c
Si desea crear un solo archivo de archivo con varios miembros para que los miembros se puedan extraer de forma independiente más adelante, use un archivador como tar o zip. GNU tar admite la opción -z para invocar gzip de forma transparente. gzip está diseñado como un complemento de tar, no como un reemplazo.
ENTORNO
La variable de entorno obsoleta GZIP puede contener un conjunto de opciones predeterminadas para gzip. Estas opciones se interpretan primero y pueden ser reemplazadas por parámetros de línea de comandos explícitos. Dado que esto puede causar problemas al usar scripts, esta función solo se admite para las opciones que es poco probable que causen demasiados problemas, y gzip advierte si se utiliza. Esta función se eliminará en una versión futura de gzip.
Puede usar un alias o un script en su lugar. Por ejemplo, si gzip se encuentra en el directorio /usr/bin, puede agregar $HOME/bin al principio de su PATH y crear un script ejecutable $HOME/bin/gzip que contenga lo siguiente:
#! /bin/sh
export PATH=/usr/bin
exec gzip -9 "$@"
VÉASE TAMBIÉN
znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1)
El formato de archivo gzip se especifica en P. Deutsch, GZIP file format specification version 4.3, [https://www.ietf.org/rfc/rfc1952.txt], Internet RFC 1952 (mayo de 1996). El formato de desinflado zip se especifica en P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3, [https://www.ietf.org/rfc/rfc1951.txt], Internet RFC 1951 (mayo de 1996).
DIAGNÓSTICOS
El estado de salida es normalmente 0; si ocurre un error, el estado de salida es 1. Si ocurre una advertencia, el estado de salida es 2.
Usage: gzip [-cdfhklLnNrtvV19] [-S suffix] [file ...]
Invalid options were specified on the command line.
file: not in gzip format
El archivo especificado para gunzip no ha sido comprimido.
file: Corrupt input.
Use zcat para recuperar algunos datos. El archivo comprimido ha sido dañado. Los datos hasta el punto de fallo se pueden recuperar usando
zcat file > recover
file: compressed with xx bits, can only handle yy bits
El archivo fue comprimido (usando LZW) por un programa que podía manejar más bits que el código de descompresión en esta máquina. Vuelva a comprimir el archivo con gzip, que comprime mejor y utiliza menos memoria.
file: already has .gz suffix -- unchanged
Se asume que el archivo ya está comprimido. Cambie el nombre del archivo e intente nuevamente.
file already exists; do you wish to overwrite (y or n)?
Responda "y" si desea que se reemplace el archivo de salida; "n" si no.
gunzip: corrupt input
Se detectó una violación de SIGSEGV, lo que generalmente significa que el archivo de entrada ha sido dañado.
xx.x%
Porcentaje de la entrada guardada por la compresión. (Relevante solo para -v y -l).
-- not a regular file or directory: ignored
Cuando el archivo de entrada no es un archivo o directorio normal (por ejemplo, un enlace simbólico, un socket, un FIFO, un archivo de dispositivo), se deja sin cambios.
-- has xx other links: unchanged
El archivo de entrada tiene enlaces; se deja sin cambios. Consulte ln(1) para obtener más información. Use la opción -f para forzar la compresión de archivos con múltiples enlaces.
PRECAUCIONES
Al escribir 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 todo el bloque se pasa a gunzip para la descompresión, gunzip detecta que hay datos basura adicionales después de los datos comprimidos y emite una advertencia de forma predeterminada. Puede usar la opción --quiet para suprimir la advertencia.
ERRORES
En algunos casos poco frecuentes, la opción --best proporciona una compresión inferior a la del nivel de compresión predeterminado (-6). En algunos archivos altamente redundantes, compress comprime mejor que gzip.
INFORMES DE ERRORES
Informe los errores a: _ Página principal de GNU gzip: [https://www.gnu.org/software/gzip/] Ayuda general sobre el uso del software GNU: [https://www.gnu.org/gethelp/]
AVISO DE COPYRIGHT
Copyright © 1998–1999, 2001–2002, 2012, 2015–2023 Free Software Foundation, Inc. Copyright © 1992, 1993 Jean-loup Gailly
Se concede permiso para realizar y distribuir copias textuales de este manual, siempre que el aviso de copyright y este aviso de permiso se conserven en todas las copias.
Se concede permiso para copiar y distribuir versiones modificadas de este manual bajo las condiciones para la copia textual, siempre que todo el trabajo derivado resultante se distribuya bajo los términos de un aviso de permiso idéntico a este.
Se concede permiso para copiar y distribuir traducciones de este manual a otro idioma, bajo las condiciones anteriores para las versiones modificadas, excepto que este aviso de permiso puede indicarse en una traducción aprobada por la Fundación.