De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

gzip es un formato de archivo y una aplicación de software que se utiliza para la compresión y descompresión de archivos . El programa fue creado por Jean-loup Gailly y Mark Adler como un reemplazo de software libre para el programa de compresión utilizado en los primeros sistemas Unix y destinado a ser utilizado por GNU (la "g" es de "GNU"). La versión 0.1 se publicó por primera vez el 31 de octubre de 1992 y la versión 1.0 siguió en febrero de 1993.

La descompresión del formato gzip se puede implementar como un algoritmo de transmisión , una característica importante para los protocolos web , el intercambio de datos y las aplicaciones ETL (en tuberías estándar ).

Formato de archivo [ editar ]

gzip se basa en el algoritmo DEFLATE , que es una combinación de codificación LZ77 y Huffman . DEFLATE fue pensado como un reemplazo para LZW y otras patentes -encumbered de compresión de datos de algoritmos que, en el momento, limitaban la facilidad de uso de la compresa y otros archivadores populares.

"gzip" también se usa a menudo para referirse al formato de archivo gzip, que es:

  • un encabezado de 10 bytes, que contiene un número mágico ( 1f 8b), el método de compresión ( 08para DEFLATE), 1 byte de indicadores de encabezado, una marca de tiempo de 4 bytes, indicadores de compresión y el ID del sistema operativo.
  • encabezados adicionales opcionales según lo permitan las banderas de encabezado, incluido el nombre de archivo original, un campo de comentario, un campo "extra" y la mitad inferior de una suma de comprobación CRC-32 para la sección de encabezado. [3]
  • un cuerpo, que contiene una carga útil comprimida DEFLATE
  • un pie de página de 8 bytes, que contiene una suma de comprobación CRC-32 y la longitud de los datos originales sin comprimir, módulo 2 32 . [4]

Aunque su formato de archivo también permite concatenar varios de estos flujos (los archivos comprimidos con gzip simplemente se descomprimen y concatenan como si fueran originalmente un archivo), [5] gzip se usa normalmente para comprimir archivos individuales. [6] Los archivos comprimidos se crean típicamente reuniendo colecciones de archivos en un solo archivo tar (también llamado tarball ), [7] y luego comprimiendo ese archivo con gzip. El archivo comprimido final suele tener la extensión .tar.gz o .tgz .

gzip no debe confundirse con el formato de archivo ZIP , que también usa DEFLATE. El formato ZIP puede contener colecciones de archivos sin un archivador externo, pero es menos compacto que los tarball comprimidos que contienen los mismos datos, porque comprime archivos individualmente y no puede aprovechar la redundancia entre archivos ( compresión sólida ).

Implementaciones [ editar ]

Se han escrito varias implementaciones del programa. El más conocido es la implementación del Proyecto GNU utilizando codificación Lempel-Ziv (LZ77). La versión de gzip de OpenBSD es en realidad el programa de compresión , al que se agregó soporte para el formato gzip en OpenBSD 3.4. La 'g' en esta versión específica significa gratis . [8] FreeBSD , DragonFly BSD y NetBSD utilizan una implementación con licencia 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 implementación de GNU. [9]Estas implementaciones provienen originalmente de NetBSD y admiten la descompresión de bzip2 y el formato de paquete Unix .

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

pigz, escrito por Mark Adler, es compatible con gzip y acelera la compresión mediante el uso de todos los núcleos y subprocesos de CPU disponibles. [10]

Derivados y otros usos [ editar ]

El alquitrán de utilidad incluida en la mayoría de las distribuciones de Linux puede extraer archivos .tar.gz pasando la z opción, por ejemplo, el alquitrán -zxf fichero.tar.gz .

zlib es una abstracción del algoritmo DEFLATE en forma de biblioteca que incluye soporte tanto para el formato de archivo gzip como para un formato de flujo de datos ligero en su API. El formato de flujo zlib, DEFLATE y el formato de archivo gzip se estandarizaron respectivamente como RFC 1950, RFC 1951 y RFC 1952.

El formato gzip se utiliza en la compresión HTTP , una técnica que se utiliza 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 como se especifica en RFC 2616. Este RFC también especifica un formato zlib (llamado "DEFLATE"), que es igual al formato gzip excepto que gzip agrega once bytes de sobrecarga en forma de encabezados y remolques. Aún así, a veces se recomienda el formato gzip sobre zlib porque Internet Explorer no implementa el estándar correctamente y no puede manejar el formato zlib como se especifica en RFC 1950. [11]

zlib DEFLATE se usa internamente en el formato Portable Network Graphics (PNG).

Desde finales de la década de 1990, bzip2 , una utilidad de compresión de archivos basada en un algoritmo de clasificación de bloques, ha ganado cierta popularidad como reemplazo de gzip. Produce archivos considerablemente más pequeños (especialmente para el código fuente y otro texto estructurado), pero a costa de memoria y tiempo de procesamiento (hasta un factor de 4). [12]

AdvanceCOMP y 7-Zip pueden producir archivos compatibles con gzip, utilizando una implementación interna DEFLATE con mejores relaciones 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 ]

Ver también [ editar ]

  • Comparación de archivadores de archivos
  • Formato de archivo gratuito
  • Lista de formatos de archivo
  • Lista de comandos de Unix
  • Libarc

Notas [ editar ]

  1. ^ Meyering, Jim (29 de diciembre de 2018). "gzip-1.10 lanzado [estable]" . La Fundación del Software Libre . Consultado el 31 de diciembre de 2018 .
  2. ^ Los tipos de medios 'application / zlib' y 'application / gzip' . Tools.ietf.org. doi : 10.17487 / RFC6713 . RFC 6713 . Consultado el 1 de marzo de 2014 .
  3. ^ Deutsch <ghost@aladdin.com>, L. Peter. "Especificación de formato de archivo GZIP versión 4.3" . tools.ietf.org . Consultado el 23 de julio de 2019 .
  4. ^ Jean-loup Gailly. "GNU Gzip" . Gnu.org . Consultado el 11 de octubre de 2015 .
  5. ^ "GNU Gzip: uso avanzado" . Gnu.org . Consultado el 28 de noviembre de 2012 .
  6. ^ "¿Puede gzip comprimir varios archivos en un solo archivo?" . Gnu.org . Consultado el 27 de enero de 2010 .
  7. ^ "tarball, The Jargon File, versión 4.4.7" . Catb.org . Consultado el 27 de enero de 2010 .
  8. ^ "Página de manual de OpenBSD gzip (1)" . Openbsd.org . OpenBSD . Consultado el 4 de febrero de 2018 .
  9. ^ "gzip" . Man.freebsd.org. 9 de octubre de 2011 . Consultado el 1 de marzo de 2014 .
  10. ^ Mark Adler (2017). "pigz: una implementación paralela de gzip para máquinas modernas de múltiples procesadores y múltiples núcleos" . zlib.net .
  11. ^ Lawrence, Eric (21 de noviembre de 2014). "Comprimir la Web" . Blogs de MSDN> IEInternals . Microsoft .
  12. ^ "Herramienta de comparación: 7-zip vs bzip2 vs gzip" . compresionratings.com . Archivado desde el original el 1 de noviembre de 2014 . Consultado el 1 de noviembre de 2014 .

Referencias [ editar ]

  • RFC 1952 - Especificación de formato de archivo GZIP versión 4.3

Enlaces externos [ editar ]

  • Página web oficial