Comprimir

Herramienta de compresión y descompresión de archivos GNU

gzip (programa)
Autor(es) original(es)
Desarrollador(es)Proyecto GNU
Lanzamiento inicial31 de octubre de 1992 ; hace 32 años ( 31 de octubre de 1992 )
Versión estable
1.13 [1]  / 19 de agosto de 2023
Repositoriogit.savannah.gnu.org/cgit/gzip.git
Escrito endo
Sistema operativoSimilar a Unix , Plan 9 , Inferno
TipoCompresión de datos
LicenciaGPL-3.0 o posterior
Sitio webwww.gnu.org/software/gzip/

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 (de donde se deriva la "g" de gzip). La versión 0.1 se lanzó públicamente por primera vez el 31 de octubre de 1992, y la versión 1.0 le siguió en febrero de 1993.

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

Formato de archivo

gzip (formato de archivo)
Extensión de nombre de archivo
.gz
Tipo de medio de Internet
aplicación/gzip [2]
Identificador de tipo uniforme (UTI)archivo org.gnu.gnu-zip
Número mágico1f 8b
Desarrollado porJean-Loup Gailly y Mark Adler
Tipo de formatoCompresión de datos
¿ Formato abierto ?
Sitio webgzip.org (obsoleto)

gzip se basa en el algoritmo DEFLATE , que es una combinación de codificación LZ77 y Huffman . DEFLATE fue pensado como reemplazo de LZW y otros algoritmos de compresión de datos sujetos a patentes que, en ese momento, limitaban la usabilidad de la utilidad de compresión y otros archivadores populares.

"gzip" también se utiliza 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 los indicadores 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 mediante DEFLATE
  • un tráiler 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]
gzip se puede combinar con el programa tar para comprimir varios archivos.

Aunque su formato de archivo también permite la concatenación de múltiples flujos de este tipo (los archivos comprimidos con gzip simplemente se descomprimen y concatenan como si fueran originalmente un solo archivo), [5] gzip se utiliza normalmente para comprimir solo archivos individuales. [6] Los archivos comprimidos se crean normalmente ensamblando 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 utiliza DEFLATE . El formato ZIP puede contener 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 archivos .Z. [8]

Implementaciones

Gzip de NetBSD / Gzip de FreeBSD
Desarrollador(es)La Fundación NetBSD
Repositoriocvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/gzip/
Escrito endo
TipoCompresión de datos
LicenciaLicencia BSD simplificada

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 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 . [9] FreeBSD , DragonFly BSD y NetBSD usan 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. [10] Estas implementaciones provienen originalmente de NetBSD y admiten la descompresión de bzip2 y el formato Unix pack .

Un programa de compresión alternativo que logra 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 al utilizar todos los núcleos y subprocesos de CPU disponibles. [11]

Recuperación de daños

Los datos de los bloques anteriores a la primera parte dañada del archivo suelen ser totalmente legibles. Los datos de los bloques que no fueron destruidos por el daño y que se encuentran después pueden recuperarse mediante soluciones alternativas difíciles. [12]

Derivados y otros usos

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

zlib es una abstracción del algoritmo DEFLATE en forma de biblioteca que incluye compatibilidad con el formato de archivo gzip y un formato de flujo de datos liviano 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 utilizada 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 el 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 encabezados y finales. Aun así, a veces se recomienda el formato gzip en lugar de zlib porque Internet Explorer no implementa el estándar correctamente y no puede manejar el formato zlib como se especifica en el RFC 1950. [14]

zlib DEFLATE es utilizado internamente por el formato Portable Network Graphics (PNG).

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

AdvanceCOMP, Zopfli , libdeflate y 7-Zip pueden producir 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. [ cita requerida ]

Una investigación publicada en 2023 mostró que las 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 y, en algunos casos, supera a los enfoques convencionales como BERT debido a los bajos requisitos de recursos, por ejemplo, no requiere hardware de GPU . [16]

Véase también

Notas

  1. ^ Jim Meyering (19 de agosto de 2023). «gzip-1.13 lanzado [estable]» . Consultado el 20 de agosto de 2023 .
  2. ^ 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 .
  3. ^ Deutsch, L. Peter (mayo de 1996). "Especificación del formato de archivo GZIP versión 4.3". Grupo de trabajo de ingeniería de Internet. doi :10.17487/RFC1952 . Consultado el 23 de julio de 2019 .
  4. ^ Jean-loup Gailly. «GNU Gzip». Gnu.org . Archivado desde el original el 15 de octubre de 2015. Consultado el 11 de octubre de 2015 .
  5. ^ "GNU Gzip: Uso avanzado". Gnu.org . Archivado desde el original el 24 de diciembre de 2012. Consultado el 28 de noviembre de 2012 .
  6. ^ "¿Puede gzip comprimir varios archivos en un único archivo?". Gnu.org . Archivado desde el original el 22 de julio de 2010. Consultado el 27 de enero de 2010 .
  7. ^ "tarball, The Jargon File, versión 4.4.7". Catb.org . Archivado desde el original el 20 de marzo de 2017. Consultado el 27 de enero de 2010 .
  8. ^ "GNU Gzip". El sistema operativo GNU y el movimiento del software libre . 5 de febrero de 2023. Consultado el 3 de abril de 2024. Actualmente, gunzip puede descomprimir archivos creados con gzip, zip, compress o pack. La detección del formato de entrada es automática.
  9. ^ "Página del manual de gzip(1) de OpenBSD". Openbsd.org . OpenBSD . Consultado el 4 de febrero de 2018 .
  10. ^ "gzip". Man.freebsd.org. 9 de octubre de 2011. Archivado desde el original el 17 de diciembre de 2019. Consultado el 1 de marzo de 2014 .
  11. ^ Mark Adler (2017). «pigz: una implementación paralela de gzip para máquinas modernas multiprocesador y multinúcleo». zlib.net . Archivado desde el original el 18 de diciembre de 2018. Consultado el 23 de diciembre de 2018 .
  12. ^ Recuperación de un archivo .gz dañado – Jean-loup Gailly, GZip.org
  13. ^ "Cómo extraer/descomprimir archivos tar.gz desde la línea de comandos de Linux". Base de conocimiento de phoenixNAP . 14 de noviembre de 2019 . Consultado el 12 de enero de 2022 .
  14. ^ Lawrence, Eric (21 de noviembre de 2014). "Comprimir la Web". Blogs de MSDN > IEInternals . Microsoft . Archivado desde el original el 28 de octubre de 2015 . Consultado el 2 de noviembre de 2015 .
  15. ^ "Herramienta de comparación: 7-zip vs bzip2 vs gzip". compressionratings.com . Archivado desde el original el 1 de noviembre de 2014. Consultado el 1 de noviembre de 2014 .
  16. ^ Jiang, Zhiying; Yang, Matthew; Tsirlin, Mikhail; Tang, Raphael; Dai, Yiqin; Lin, Jimmy (julio de 2023). «Clasificación de textos de «bajos recursos»: 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.

Referencias

  • RFC 1952 Archivado el 28 de julio de 2019 en Wayback Machine – Especificación del formato de archivo GZIP versión 4.3
  • Sitio web oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=Gzip&oldid=1261801126#Derivados_y_otros_usos"