Formato de archivo GZIP

GZIP es un formato de archivo y una aplicación de software popular que se utiliza para la compresión y descompresión de archivos. Fue desarrollado como un algoritmo de compresión gratuito y de código abierto por Jean-Loup Gailly y Mark Adler a principios de los años 1990. El nombre “GZIP” significa GNU ZIP, lo que indica su asociación con el Proyecto GNU.
La compresión GZIP funciona reduciendo el tamaño de los archivos, lo que facilita su transferencia a través de redes o su almacenamiento en disco. Logra la compresión reemplazando cadenas repetidas de datos con referencias, reduciendo así la redundancia y el tamaño general del archivo. GZIP es particularmente eficaz para comprimir archivos basados ​​en texto como HTML, CSS, JavaScript, XML y JSON, pero también se puede utilizar para comprimir otros tipos de archivos.

Acerca de la información del archivo GZIP

La información del archivo GZIP se refiere a los metadatos y datos contenidos en un archivo comprimido utilizando el algoritmo de compresión GZIP. Los archivos GZIP suelen incluir información como atributos de archivos, marcas de tiempo, método de compresión y otros datos relevantes necesarios para la descompresión y restauración de archivos. Estos metadatos son cruciales para identificar y procesar adecuadamente los archivos comprimidos.
Además, la información del archivo GZIP también puede incluir detalles sobre el proceso de compresión en sí, como el nivel de compresión, sumas de verificación y cualquier indicador u opción adicional utilizada durante la compresión. Esta información es esencial para garantizar la integridad y corrección de los datos comprimidos al descomprimirlos. En general, comprender la información del archivo GZIP es vital para administrar y trabajar eficazmente con archivos comprimidos, ya sea para almacenamiento de datos, transmisión a través de redes o con fines de archivo.

Evolución del formato de archivo GZIP

El formato de archivo GZIP tiene sus raíces a finales de la década de 1980, cuando Jean-loup Gailly y Mark Adler desarrollaron el algoritmo de compresión GZIP como parte del proyecto GNU. GZIP significa GNU ZIP, lo que refleja sus orígenes dentro del proyecto GNU. El objetivo era crear una herramienta de compresión que pudiera reducir de manera eficiente el tamaño de los archivos manteniendo la compatibilidad entre diferentes sistemas informáticos.
Jean-loup Gailly y Mark Adler desarrollaron el programa como una alternativa gratuita a la utilidad de compresión que se encontraba en los primeros sistemas Unix. Fue diseñado para ser parte del proyecto GNU, de ahí la “g” en gzip. La versión inicial, la versión 0.1, estuvo disponible para el público el 31 de octubre de 1992, seguida de la versión 1.0 en febrero de 1993.

Estructura GZIP

GZIP utiliza el algoritmo DEFLATE, que combina las técnicas de codificación LZ77 y Huffman. DEFLATE se desarrolló para reemplazar LZW y otros algoritmos de compresión sobrecargados por patentes, que limitaban la efectividad de la compresión y utilidades de archivo similares que prevalecían en ese momento. El formato de archivo GZIP sigue una estructura bien definida que consta de tres partes principales:

  • Encabezado (10 bytes): Esta sección proporciona información esencial sobre el archivo y su contenido. Aquí hay un desglose de los datos del encabezado.
  • Número mágico (4 bytes): Esto identifica el archivo como un archivo GZIP. Tiene un valor hexadecimal específico (1f 8b) que reconocen las herramientas de descompresión.
  • Método de compresión (1 byte): Este byte normalmente contiene el valor 8, lo que indica el algoritmo de compresión DEFLATE utilizado por GZIP.
  • Indicadores de encabezado (1 byte): Estos indicadores controlan aspectos específicos de la descompresión, como la codificación del nombre del archivo o la presencia de un comentario.
  • Hora de creación (4 bytes): Esta sección almacena una marca de tiempo Unix que indica la hora en que se creó el archivo.
  • CRC-32 (4 bytes): Este valor de verificación de redundancia cíclica se utiliza para la detección de errores durante la descompresión. Se calcula en función de los datos descomprimidos y permite que el software de descompresión verifique la integridad de los archivos extraídos.

Beneficios de este formato

  • Compresión sin pérdida: GZIP comprime datos sin pérdida de información. A diferencia de algunas técnicas de compresión, los archivos originales se pueden reconstruir perfectamente después de la descompresión. Esto es crucial para documentos, imágenes o códigos importantes donde mantener la integridad de los datos es esencial.
  • Amplia compatibilidad: Una de las mayores fortalezas de GZIP es su adopción generalizada. Es compatible con la mayoría de los sistemas operativos, utilidades de archivo (WinRAR, 7-Zip) y servidores web. Esto garantiza que pueda abrir fácilmente archivos GZIP en varias plataformas sin necesidad de software específico. Además, GZIP es ampliamente compatible con varios sistemas operativos, incluidos los sistemas basados ​​en Unix, Linux, Windows y macOS. Esta compatibilidad multiplataforma garantiza que los archivos comprimidos con GZIP se puedan crear y descomprimir sin problemas en diferentes entornos.
  • Compresión transmitible: GZIP admite la compresión de secuencias, lo que permite comprimir o descomprimir archivos sobre la marcha sin necesidad de esperar a que se procese todo el archivo. Esto lo hace adecuado para escenarios donde los datos se generan o transmiten continuamente, como la comunicación de red y las operaciones de copia de seguridad de datos.
  • Estándar abierto: GZIP es un estándar abierto y ampliamente adoptado para la compresión de archivos, con especificaciones disponibles públicamente. Esta apertura fomenta la interoperabilidad y la compatibilidad entre diferentes aplicaciones y sistemas de software, fomentando un ecosistema vibrante de herramientas y bibliotecas para trabajar con archivos comprimidos GZIP. Utilizar GZIP es generalmente sencillo. Muchas herramientas y software comprimen o descomprimen automáticamente archivos en este formato. Además, el proceso de descompresión es eficiente y requiere recursos mínimos.

Operaciones compatibles con el archivo GZIP

Aspose.ZIP permite al usuario extraer una entrada particular o un archivo completo. Para Aspose.ZIP para .NET Puede usar GzipArchiveClass para abrir el archivo .gz y luego recorrer sus entradas, extrayéndolas a la ubicación deseada. Para Aspose.ZIP para Java Enfoque similar al utilizar GzipArchive para abrir el archivo .gz y extraer entradas.

Archivo GZIP - Estructura interna

El archivo GZIP es como un paquete cuidadosamente envuelto. Comienza con un encabezado de 10 bytes que presenta el formato y el método de compresión. El corazón está en la sección de datos comprimidos, reducidos mediante algoritmos inteligentes. Finalmente, un pie de página de 8 bytes verifica la integridad de los datos con sumas de verificación, lo que garantiza que sus archivos lleguen de manera segura después de la descompresión.

Archivo GZIP - Estructura interna

Estructura del archivo interno

  • Metadatos de archivo: similar a un archivo tar, cada archivo almacena información básica como la hora de modificación y los permisos. Sin embargo, esta sección es flexible y permite omitir o incluir detalles adicionales como listas de control de acceso (ACL) o atributos extendidos (EA) según sus necesidades. Se recomienda incluir una función hash sólida (como SHA1) para archivos normales para garantizar la integridad de los datos.
  • Múltiples flujos de contenido: a diferencia de los archivos tradicionales, los archivos pueden tener más de un flujo de datos dentro del archivo de datos interno. Esto es útil para almacenar atributos extendidos o bifurcaciones de recursos asociados con el archivo.
  • Encabezados: el archivo de índice interno contiene encabezados de archivo, reflejando los que se encuentran dispersos por el archivo de datos interno. Pero, cuando se almacenan por separado, los encabezados de índice deben hacer referencia a la posición inicial de sus datos correspondientes dentro del archivo de datos. Además, las entradas del directorio en el índice enumeran los archivos que contienen y sus desplazamientos correspondientes dentro del índice del archivo interno.
  • Justificación de los metadatos duplicados: esta elección de diseño garantiza una transmisión/decodificación de datos eficiente y un acceso aleatorio a los archivos. Además, los metadatos se comprimen bien, lo que resulta en una sobrecarga de almacenamiento mínima. Las pruebas muestran que los metadatos normalmente ocupan menos del 0,3 % del espacio de almacenamiento, lo que hace que la compensación valga la pena.
  • Encabezados de bloque: los encabezados de bloque, similares al archivo externo, contienen información sobre el tamaño del bloque y una secuencia de identificador única.

Ejemplos de uso de GZIP

La API Aspose.ZIP permite extraer archivos en sus aplicaciones sin la necesidad de otras aplicaciones de terceros. La API Aspose.ZIP proporciona la clase GzipArchive para trabajar con archivos GZIP.

GZIP with compress only single source via C#

Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.

    using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (GzipArchive archive = new GzipArchive())
        {
            archive.SetSource(source);
            archive.Save(«archive.gz);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Información adicional sobre archivos GZIP

La gente ha estado preguntando

1. ¿Qué es GZIP?

GZIP (archivo comprimido GNU) es un formato de archivo popular que reduce el tamaño de los archivos para facilitar su almacenamiento y transmisión.

2. ¿Cómo se compara la compresión GZIP con otros formatos como ZIP?

GZIP normalmente ofrece relaciones de compresión más altas en comparación con ZIP, especialmente cuando se comprimen archivos basados ​​en texto. Sin embargo, los archivos ZIP a menudo incluyen soporte para múltiples archivos y directorios, lo que los hace más versátiles para empaquetar varios archivos juntos. .

3. ¿Puede GZIP comprimir varios archivos en un solo archivo?

GZIP está diseñado para comprimir un solo archivo, no varios archivos o directorios. Sin embargo, es común usar herramientas como tar en combinación con GZIP para crear un tarball archivo tar y luego comprimirlo usando GZIP para crear un único archivo comprimido.