Articulo de referencia

gzip

{{cite journal |journal=IEEE Access |doi=10.1109/ACCESS.2020.3041688 |doi-access=free|title=On the Potential of V2X Message Compression for Vehicular Networks |page=14 |postscri...

gzip es un formato de archivo y un programa de compresión de archivos . El programa utiliza el algoritmo Deflate para comprimir y descomprimir un único archivo utilizando el formato de archivo gzip .

gzip se lanzó en 1992 como software libre para reemplazar el programa compress , ya que su algoritmo de compresión, LZW , estaba protegido por patentes de Unisys e IBM , [ 4 ] que no expiraron hasta 2003 y 2004. [ 5 ] Jean-Loup Gailly diseñó el formato de archivo gzip, [ 6 ] que posteriormente se especificó en la RFC 1952, [ 7 ] y fue quien escribió originalmente el programa gzip. Mark Adler escribió la parte de descompresión. Actualmente, gzip es desarrollado por el proyecto GNU . [ 8 ]

Dado que el formato de archivo se puede descomprimir mediante un algoritmo de transmisión , se utiliza comúnmente en tecnologías basadas en flujo, como protocolos web , intercambio de datos y ETL (en tuberías estándar ).

Formato de archivo

gzip se puede combinar con el programa tar para comprimir varios archivos.

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

Aunque se pueden concatenar múltiples flujos (los archivos gzip simplemente se descomprimen y concatenan como si originalmente fueran un solo archivo), [ 10 ] normalmente solo se comprime un único archivo. [ 11 ] Los archivos comprimidos se crean típicamente ensamblando colecciones de archivos en un único archivo tar (también llamado tarball ), [ 12 ] y luego comprimiendo ese archivo con gzip. El archivo comprimido final generalmente tiene 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 compresor externo, pero es menos compacto que los archivos tar comprimidos que contienen los mismos datos, ya que comprime los archivos individualmente y no puede aprovechar la redundancia entre ellos ( compresión sólida ). El formato de archivo gzip tampoco debe confundirse con el de la utilidad compress, basada en LZW, con extensión .gzip .Z; sin embargo, la utilidad gunzip puede descomprimir .Zarchivos. [ 13 ]

Estructura de archivos

El orden de bytes es little-endian . [ 14 ]

Implementaciones

Se han escrito varias implementaciones del programa. La más conocida es la implementación del Proyecto GNU que utiliza la codificación Lempel-Ziv (LZ77). La versión de gzip de OpenBSD 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 . [ 16 ] 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 las implementaciones GNU. [ 17 ] Estas implementaciones provienen originalmente de NetBSD y admiten la descompresión de bzip2 y el formato de paquete Unix .

Zopfli es un programa de compresión alternativo que ofrece una mejora del 3 al 8 % . Este programa logra una compresión compatible con gzip mediante algoritmos más exhaustivos, aunque a costa de un mayor tiempo de compresión. 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. [ 18 ]

Recuperación de daños

Los datos en los bloques anteriores a la primera parte dañada del archivo suelen ser completamente legibles. Los datos de los bloques no destruidos por el daño, que se encuentran posteriormente, pueden recuperarse mediante soluciones alternativas complejas. [ 19 ]

Derivados y otros usos

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

La biblioteca zlib admite el formato de archivo gzip. [ 21 ]

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, tal como se especifica en la RFC 2616. Esta RFC también especifica un formato zlib (denominado "DEFLATE"), que es equivalente al formato gzip, salvo que gzip añade once bytes de sobrecarga en forma de encabezados y pies de página. Aun 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 tal como se especifica en la RFC 1950. [ 22 ]

Desde finales de la década de 1990, bzip2 , una utilidad de compresión de archivos basada en un algoritmo de ordenación por bloques, ha ganado cierta popularidad como alternativa a gzip. Produce archivos considerablemente más pequeños (especialmente para código fuente y otros textos estructurados), pero a costa de un mayor consumo de memoria y tiempo de procesamiento (hasta un factor de 4). [ 23 ]

AdvanceCOMP, Zopfli , libdeflate y 7-Zip pueden generar archivos compatibles con gzip, utilizando una implementación interna de DEFLATE con mejores índices de compresión que el propio gzip, a costa de un mayor tiempo de procesador en comparación con la implementación de referencia.

Una investigación publicada en 2023 demostró que técnicas de compresión sin pérdidas simples, como gzip, podrían combinarse con un clasificador de k vecinos más cercanos 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 e incluso supera, en algunos casos, a los enfoques convencionales como BERT debido a sus bajos requisitos de recursos, por ejemplo, la ausencia de necesidad de hardware GPU . [ 24 ]

Véase también

Referencias

  1. Jim Meyering (9 de abril de 2025). "gzip-1.14 lanzado [ estable ] " . Consultado el 10 de abril de 2025 .
  2. "Sobre el potencial de la compresión de mensajes V2X para redes vehiculares" . IEEE Access : 14. doi : 10.1109/ACCESS.2020.3041688 Número de referencia [20] "Documentación de GNU: Gzip"{{cite journal}}: CS1 mantenimiento: postscript ( enlace )
  3. "Gzip - Proyecto GNU" . Archivado del original el 5 de mayo de 2025. Para obtener información sobre el código fuente y otros detalles, consulte la página del proyecto Gzip en savannah.gnu.org.
  4. "Gzip - Proyecto GNU" . Archivado del original el 5 de mayo de 2025. Desarrollamos este programa como reemplazo de compress debido a las patentes de Unisys e IBM que cubren el algoritmo LZW utilizado por compress.
  5. "Unisys | Información sobre patentes y software LZW" . Archivado del original el 26 de junio de 2009. La patente estadounidense LZW n.° 4.558.302 de Unisys expiró el 20 de junio de 2003, las patentes equivalentes en el Reino Unido, Francia, Alemania e Italia expiraron el 18 de junio de 2004, las patentes equivalentes japonesas expiraron el 20 de junio de 2004 y la patente equivalente canadiense expiró el 7 de julio de 2004.
  6. Agradecimientos . IETF . pág. 10. doi : 10.17487/RFC1952 . RFC 1952. Jean-Loup Gailly diseñó el formato gzip y ...  
  7. Especificación del formato de archivo GZIP versión 4.3 . IETF . doi : 10.17487/RFC1952 . RFC 1952 .
  8. "Gzip - Proyecto GNU" . Archivado del original el 5 de mayo de 2025. GNU Gzip es un popular programa de compresión de datos escrito originalmente por Jean-Loup Gailly para el proyecto GNU. Mark Adler escribió la parte de descompresión.
  9. Los tipos de medios 'application/zlib' y 'application/gzip' . Grupo de Trabajo de Ingeniería de Internet. doi : 10.17487/RFC6713 . RFC 6713. Consultado el 1 de marzo de 2014 .
  10. "GNU Gzip: Uso avanzado" . Gnu.org . Archivado del original el 24 de diciembre de 2012. Consultado el 28 de noviembre de 2012 .
  11. "¿Puede gzip comprimir varios archivos en un solo archivo comprimido?" . Gnu.org . Archivado del original el 22 de julio de 2010 . Consultado el 27 de enero de 2010 .
  12. "tarball, The Jargon File, versión 4.4.7" . Catb.org . Archivado del original el 20 de marzo de 2017. Recuperado el 27 de enero de 2010 .
  13. "GNU Gzip" . El sistema operativo GNU y el movimiento del software libre . 5 de febrero de 2023. Consultado el 3 de abril de 2024. gunzip actualmente puede descomprimir archivos creados con gzip, zip, compress o pack. La detección del formato de entrada es automática.
  14. Convenciones generales . IETF . pág. 4. doi : 10.17487/RFC1952 . RFC 1952. Todos los números multibyte en el formato descrito aquí se almacenan con el byte menos significativo primero (en la dirección de memoria más baja) . 
  15. Formato de miembro . IETF . pág. 5. doi : 10.17487/RFC1952 . RFC 1952 . 
  16. "Página del manual de OpenBSD gzip(1)" . Openbsd.org . OpenBSD . Consultado el 4 de febrero de 2018 .
  17. "gzip" . Man.freebsd.org. 9 de octubre de 2011. Archivado del original el 17 de diciembre de 2019. Consultado el 1 de marzo de 2014 .
  18. Mark Adler (2017). "pigz: Una implementación paralela de gzip para máquinas multiprocesador y multinúcleo modernas" . zlib.net . Archivado del original el 18 de diciembre de 2018. Recuperado el 23 de diciembre de 2018 .
  19. Recuperación de un archivo .gz dañado – Jean-Loup Gailly, GZip.org
  20. "Cómo extraer/descomprimir archivos tar.gz desde la línea de comandos de Linux" . Base de conocimientos de phoenixNAP . 14 de noviembre de 2019. Consultado el 12 de enero de 2022 .
  21. "Manual de zlib 1.3.1" . Introducción. Archivado del original el 8 de febrero de 2024. Consultado el 8 de febrero de 2024. La biblioteca también admite la lectura y escritura de archivos en formato gzip (.gz) ... 
  22. Lawrence, Eric (21 de noviembre de 2014). "Comprimiendo la Web" . Blogs de MSDN > IEInternals . Microsoft . Archivado del original el 28 de octubre de 2015. Recuperado el 2 de noviembre de 2015 .
  23. "Herramienta de comparación: 7-zip vs bzip2 vs gzip" . compressionratings.com . Archivado del original el 1 de noviembre de 2014. Consultado el 1 de noviembre de 2014 .
  24. ^ Jiang, Zhiying; Yang, Mateo; Tsirlin, Mijaíl; Tang, Rafael; Dai, Yiqin; Lin, Jimmy (julio de 2023). "Clasificación de textos con recursos limitados: un método de clasificación sin parámetros con compresores . Hallazgos de la Asociación de Lingüística Computacional: ACL 2023. Toronto, Canadá: Asociación de Lingüística Computacional: 6810–6828 . doi : 10.18653/v1/2023.findings-acl.426 . S2CID 260668487 . 
  • Sitio web oficial