Ir al contenido

gzip

De Wikipedia, la enciclopedia libre
Gzip


Una captura de pantalla
Desarrollador
Jean-loup Gailly y Mark Adler, gzip.org
https://www.gnu.org/software/gzip/ y https://www.gzip.org/
Información general
Extensión de archivo .gz
Tipo de MIME application/x-gzip
Lanzamiento inicial 31 de octubre de 1992 (33 años)[1]
Última versión 1.14 (info)
9 de abril de 2025 (1 año, 3 meses y 13 días)
Tipo de formato Compresión de datos
Contenedor para Abrir formatos
Contenido por Zip
Estándar(es) RFC 1952
Formato abierto Sí 

gzip es un formato de archivo y programa de código abierto desarrollado por GNU que reemplaza al programa compress de Unix. Fue creado por Jean-Loup Gailly y Mark Adler, lanzando su primera versión el 31 de octubre de 1992.

Formato de archivo

[editar]

Un archivo gzip (descrito en la tabla siguiente) consta de una cabecera de 10 bytes, campos opcionales de cabecera adicionales, datos comprimidos por Deflate y un tráiler de 8 bytes.

Aunque se pueden concatenar múltiples flujos (los archivos con cierre comprimido simplemente se concatenan como si originalmente fueran un solo archivo)[2], normalmente solo se comprime un único archivo. Los archivos comprimidos suelen crearse ensamblando colecciones de archivos en un único archivo tar (también llamado tarball)[3], y luego comprimiendo ese archivo con gzip. El archivo comprimido final suele tener la extensión .tar.gz, .tgz, .gz, o .gzip.

gzip no debe confundirse con el formato de archivo ZIP, que también utiliza DEFLATE. El formato ZIP puede almacenar colecciones de archivos sin un archivador externo, pero es menos compacto que los tarballs comprimidos que contienen los mismos datos, porque comprime los archivos individualmente y no puede aprovechar la redundancia entre archivos (compresión sólida). El formato de archivo gzip tampoco debe confundirse con el de la utilidad de compresión, basada en LZW, con extensión .Z; Sin embargo, la utilidad Gunzip puede descomprimir .Z[4].

Estructura del archivo

[editar]
Offset (bytes) Campo[5] Tamaño (bytes) Descripción
0 ID1 1 Número mágico. Debe ser 1F 8B.
1 ID2 1
2 CM 1 Método de compresión. Debe ser 8 (Deflate).
3 FLG 1 Flags. Los bits reservados deben ser cero.
  • Bit 0 (LSb): FTEXT. Establecido por el compresor para indicar que la codificación del archivo probablemente es ASCII.
  • Bit 1: FHCRC
  • Bit 2: FEXTRA
  • Bit 3: FNAME
  • Bit 4: FCOMMENT
  • Bit 5: Reservado
  • Bit 6: Reservado
  • Bit 7 (MSb): Reservado
4 MTIME 4 Tiempo Unix en el que el archivo fue modificado por última vez. Si los datos comprimidos no provienen de un archivo, MTIME es el tiempo Unix en el que comenzó la compresión. Un valor de 0 significa que no hay una marca temporal disponible.
8 XFL 1 Banderas adicionales.
  • Banderas específicas de Deflate.
    • 0: Ninguna (valor predeterminado)
    • 2: Mejor compresión (nivel 9)
    • 4: Compresión más rápida (nivel 1)
9 OS 1 Sistema de archivos en el que se realizó la compresión.
10 XLEN 0 o 2 El campo adicional es una secuencia de subcampos. XLEN indica el tamaño en bytes del campo adicional. Ambos están presentes si la bandera FEXTRA está establecida. Cada subcampo comienza con SI1 SI2 (un identificador de dos bytes; normalmente dos letras ASCII con un valor mnemónico) seguido de un valor de dos bytes LEN que indica el número de bytes restantes en el subcampo. Los identificadores de subcampo con SI2 = 0 están reservados para uso futuro.
12 Campo adicional 0 o XLEN
Varia Nombre del archivo Varia Cadena terminada en nulo con el nombre del archivo comprimido. Está presente si la bandera FNAME está establecida. Codificada en ISO 8859-1 (latin-1). Se convierte a minúsculas en sistemas de archivos que no distinguen entre mayúsculas y minúsculas. Está vacía si los datos comprimidos no provienen de un archivo con nombre.
Comentario del archivo Varia Cadena terminada en nulo con un comentario del archivo destinado al consumo humano. Está presente si la bandera FCOMMENT está establecida. Codificada en ISO 8859-1 (latin-1). Los saltos de línea deben utilizar un único carácter de avance de línea (LF).
CRC16 0 o 2 Los dos bytes menos significativos del CRC-32 (ISO 3309) de todos los bytes del archivo gzip hasta (sin incluir) este campo. Está presente si la bandera FHCRC está establecida.
Datos comprimidos Varia Flujo Deflate.
CRC32 4 CRC-32 (ISO 3309) de los datos sin comprimir.
ISIZE 4 Tamaño (en bytes) de los datos sin comprimir módulo {\displaystyle 2^{32}}.

Implementaciones

[editar]

Se han escrito diversas implementaciones del programa. La más conocida es la implementación del Proyecto GNU usando código Lempel-Ziv (LZ77). La versión de OpenBSD de gzip es en realidad el programa compress, al que se añadió soporte para el formato gzip en OpenBSD 3.4. La "g" en esta versión específica significa 'gratis'.[6] FreeBSD, DragonFly BSD y NetBSD utilizan una implementación licenciada por BSD en lugar de la versión GNU; en realidad es una interfaz de línea de comandos para ZLIB destinada a ser compatible con las opciones de las implementaciones de GNU. Estas implementaciones provienen originalmente de NetBSD y soportan la descompresión de bzip2 y el formato Unix, pack.

Un programa alternativo de compresión que logra una mejor compresión entre un 3 y un 8% es Zopfli. Logra una compresión compatible con gzip mediante algoritmos más exhaustivos, a costa del tiempo de compresión requerido. No afecta al tiempo de descompresión.

pigz, escrito por Mark Adler, es compatible con gzip y acelera la compresión utilizando todos los núcleos e hilos de CPU disponibles.[7]

Recuperación de daños

[editar]

Los datos en bloques anteriores a la primera parte dañada del archivo suelen ser completamente legibles. Los datos de bloques no destruidos por daños que se encuentran después pueden recuperarse mediante soluciones difíciles.[8]

Derivados y otros usos

[editar]

La utilidad tar incluida en la mayoría de las distribuciones de Linux puede extraer .tar.gz archivos pasando la opción z, por ejemplo, tar -zxf file.tar.gz, donde -z indica descompresión, -x significa extracción y -f especifica el nombre del archivo comprimido del que se debe extraer. Opcionalmente, -v (verboso) lista los archivos a medida que se extraen.[9]

La librería zlib tiene soporte al formato de archivos de gzip.[10]

El formato gzip se utiliza en la compresión HTTP, una técnica empleada para acelerar el envío de HTML y otros contenidos en la World Wide Web. Es uno de los tres formatos estándar para la compresión HTTP especificados en la RFC 2616. Este RFC también especifica un formato zlib (llamado "DEFLATE"), que es igual al formato gzip, excepto que gzip añade once bytes de sobrecarga en forma de cabeceras y remolques. Aun así, a veces se recomienda el formato gzip sobre zlib porque Internet Explorer no implementa correctamente el estándar y no puede manejar el formato zlib especificado en el RFC 1950.[11]

Desde finales de los años 90, bzip2, una utilidad de compresión de archivos basada en un algoritmo de ordenación de bloques, ha ganado cierta popularidad como reemplazo de gzip. Produce archivos considerablemente más pequeños (especialmente para código fuente y otros textos estructurados), pero a costa de memoria y tiempo de procesamiento (hasta un factor de 4).[12]

AdvanceCOMP, Zopfli, libdeflate y 7-Zip pueden producir archivos compatibles con gzip, utilizando una implementación interna de DEFLATE con mejores proporciones de compresión que el propio gzip, a costa de más tiempo de procesador en comparación con la implementación de referencia.[cita requerida]

Investigaciones publicadas en 2023 mostraron que técnicas simples de compresión sin pérdidas como gzip podían combinarse con un clasificador K vecinos más próximos para crear una alternativa atractiva a las redes neuronales profundas para la clasificación de texto en el procesamiento del lenguaje natural. Se ha demostrado que este enfoque iguala y, en algunos casos, supera a los métodos convencionales como BERT debido a los bajos requerimientos de recursos, por ejemplo, la ausencia de hardware de GPU.[13]

Referencias

[editar]
  1. Error en la cita: Etiqueta <ref> no válida; no se ha definido el contenido de las referencias llamadas ":gzip01"
  2. «Advanced usage (GNU Gzip)». www.gnu.org. Consultado el 16 de julio de 2026.
  3. «tarball». www.catb.org. Consultado el 16 de julio de 2026.
  4. «GNU Gzip». www.gnu.org. Archivado desde el original el 15 de mayo de 2026. Consultado el 16 de julio de 2026.
  5. Formato del miembro, p. 5, doi:10.17487/RFC1952, RFC 1952.
  6. «gzip(1) - OpenBSD manual pages». man.openbsd.org. Consultado el 16 de julio de 2026.
  7. «pigz - Parallel gzip». zlib.net. Consultado el 16 de julio de 2026.
  8. «Recovering a damaged .gz file – Jean-Loup Gailly, GZip.org».
  9. Zivanov, Sara (14 de abril de 2025). «How to Extract or Unzip .tar.gz Files in Linux». Knowledge Base by phoenixNAP (en inglés estadounidense). Consultado el 16 de julio de 2026.
  10. «zlib 1.3.1 Manual». zlib.net. Archivado desde el original el 8 de febrero de 2024. Consultado el 16 de julio de 2026.
  11. «Compressing the Web - IEInternals - Site Home - MSDN Blogs». blogs.msdn.com (en inglés). Archivado desde el original el 28 de octubre de 2015. Consultado el 16 de julio de 2026.
  12. «7-zip vs bzip2 vs gzip». compressionratings.com. Archivado desde el original el 1 de noviembre de 2014. Consultado el 16 de julio de 2026.
  13. Jiang, Zhiying; Yang, Matthew; Tsirlin, Mikhail; Tang, Raphael; Dai, Yiqin; Lin, Jimmy (2023-07). «“Low-Resource” Text Classification: A Parameter-Free Classification Method with Compressors». En Rogers, Anna, ed. Findings of the Association for Computational Linguistics: ACL 2023 (Association for Computational Linguistics): 6810-6828. doi:10.18653/v1/2023.findings-acl.426. Consultado el 16 de julio de 2026.

Enlaces externos

[editar]
gzip
Morty Proxy This is a proxified and sanitized view of the page, visit original site.