Saltar al contenido

¿Cómo se relacionan zlib, gzip y zip? ¿Qué tienen en común y en qué se diferencian?

Solución:

Forma corta:

.zip es un formato de archivo que utiliza, normalmente, el método de compresión Deflate. los .gz El formato gzip es para archivos individuales, también usando el método de compresión Deflate. A menudo, gzip se usa en combinación con tar para crear un formato de archivo comprimido, .tar.gz. La biblioteca zlib proporciona código de descompresión y compresión Deflate para que lo utilicen zip, gzip, png (que utiliza el contenedor zlib en los datos deflate) y muchas otras aplicaciones.

Forma larga:

El formato ZIP fue desarrollado por Phil Katz como un formato abierto con una especificación abierta, donde su implementación, PKZIP, era shareware. Es un formato de archivo que almacena archivos y su estructura de directorios, donde cada archivo se comprime individualmente. El tipo de archivo es .zip. Los archivos, así como la estructura del directorio, se pueden cifrar opcionalmente.

El formato ZIP admite varios métodos de compresión:

    0 - The file is stored (no compression)
    1 - The file is Shrunk
    2 - The file is Reduced with compression factor 1
    3 - The file is Reduced with compression factor 2
    4 - The file is Reduced with compression factor 3
    5 - The file is Reduced with compression factor 4
    6 - The file is Imploded
    7 - Reserved for Tokenizing compression algorithm
    8 - The file is Deflated
    9 - Enhanced Deflating using Deflate64(tm)
   10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
   11 - Reserved by PKWARE
   12 - File is compressed using BZIP2 algorithm
   13 - Reserved by PKWARE
   14 - LZMA
   15 - Reserved by PKWARE
   16 - IBM z/OS CMPSC Compression
   17 - Reserved by PKWARE
   18 - File is compressed using IBM TERSE (new)
   19 - IBM LZ77 z Architecture 
   20 - deprecated (use method 93 for zstd)
   93 - Zstandard (zstd) Compression 
   94 - MP3 Compression 
   95 - XZ Compression 
   96 - JPEG variant
   97 - WavPack compressed data
   98 - PPMd version I, Rev 1
   99 - AE-x encryption marker (see APPENDIX E)

Los métodos 1 a 7 son históricos y no están en uso. Los métodos del 9 al 98 son adiciones relativamente recientes y se utilizan en pequeñas cantidades y en cantidades variables. El único método de uso verdaderamente generalizado en el formato ZIP es el método 8, Deflate y, en menor medida, el método 0, que no es ninguna compresión. Prácticamente todos .zip El archivo que encontrará en la naturaleza utilizará exclusivamente los métodos 8 y 0, probablemente solo el método 8. (El método 8 también tiene un medio para almacenar de manera efectiva los datos sin compresión y con relativamente poca expansión, y el método 0 no se puede transmitir mientras que el método 8 puede ser.)

El estándar ISO / IEC 21320-1: 2015 para contenedores de archivos es un formato zip restringido, como el que se usa en archivos Java (.jar), archivos Office Open XML (Microsoft Office .docx, .xlsx, .pptx), Office Document Archivos de formato (.odt, .ods, .odp) y archivos EPUB (.epub). Ese estándar limita los métodos de compresión a 0 y 8, así como otras restricciones como la falta de cifrado o firmas.

Alrededor de 1990, el grupo Info-ZIP escribió implementaciones portátiles, gratuitas y de código abierto de zip y unzip utilidades, soporte de compresión con el formato Deflate y descompresión de ese y los formatos anteriores. Esto amplió enormemente el uso de la .zip formato.

A principios de los 90, el formato gzip se desarrolló como reemplazo de Unix. compress utilidad, derivada del código Deflate en las utilidades Info-ZIP. Unix compress fue diseñado para comprimir un solo archivo o flujo, agregando un .Z al nombre del archivo. compress utiliza el algoritmo de compresión LZW, que en ese momento estaba bajo patente y su libre uso estaba en disputa por parte de los titulares de la patente. Aunque Phil Katz patentó algunas implementaciones específicas de Deflate, el formato no lo fue, por lo que fue posible escribir una implementación de Deflate que no infringiera ninguna patente. Esa implementación no ha sido tan desafiada en los últimos 20 años. El Unix gzip La utilidad fue pensada como un reemplazo directo de compress, y de hecho es capaz de descomprimir compress-Datos comprimidos (asumiendo que pudo analizar esa oración). gzip agrega un .gz al nombre del archivo. gzip utiliza el formato de datos comprimidos Deflate, que se comprime bastante mejor que Unix compress, tiene una descompresión muy rápida y agrega un CRC-32 como verificación de integridad para los datos. El formato de encabezado también permite el almacenamiento de más información que la compress formato permitido, como el nombre del archivo original y la hora de modificación del archivo.

Aunque compress comprime un solo archivo, era común usar el tar utilidad para crear un archivo de archivos, sus atributos y su estructura de directorios en un solo .tar archivo, y luego comprimirlo con compress hacer un .tar.Z expediente. De hecho, el tar utilidad tenía y todavía tiene una opción para hacer la compresión al mismo tiempo, en lugar de tener que canalizar la salida de tar para compress. Todo esto se trasladó al formato gzip, y tar tiene una opción para comprimir directamente al .tar.gz formato. los tar.gz formato se comprime mejor que el .zip enfoque, ya que la compresión de un .tar puede aprovechar la redundancia entre archivos, especialmente muchos archivos pequeños. .tar.gz es el formato de archivo más común en uso en Unix debido a su muy alta portabilidad, pero también se utilizan métodos de compresión más efectivos, por lo que a menudo verá .tar.bz2 y .tar.xz archivo.

diferente a .tar, .zip tiene un directorio central al final, que proporciona una lista de los contenidos. Eso y la compresión separada proporciona acceso aleatorio a las entradas individuales en un .zip expediente. A .tar archivo tendría que ser descomprimido y escaneado de principio a fin para construir un directorio, que es como un .tar se enumera el archivo.

Poco después de la introducción de gzip, a mediados de la década de 1990, la misma disputa de patentes puso en duda el uso gratuito del .gif formato de imagen, muy utilizado en tablones de anuncios y en la World Wide Web (algo nuevo en ese momento). Entonces, un pequeño grupo creó el formato de imagen PNG comprimido sin pérdidas, con el tipo de archivo .png, para reemplazar .gif. Ese formato también usa el formato Deflate para la compresión, que se aplica después de que los filtros en los datos de la imagen exponen más redundancia. Para promover el uso generalizado del formato PNG, se crearon dos bibliotecas de código gratuitas. libpng y zlib. libpng manejó todas las características del formato PNG, y zlib proporcionó el código de compresión y descompresión para uso de libpng, así como para otras aplicaciones. zlib fue adaptado del gzip código.

Todas las patentes mencionadas han expirado desde entonces.

La biblioteca zlib admite la compresión y descompresión de desinflado y tres tipos de envoltura alrededor de los flujos de desinflado. Esos son: ningún ajuste (desinflado “sin procesar”), ajuste zlib, que se utiliza en los bloques de datos en formato PNG, y ajuste gzip, para proporcionar rutinas gzip para el programador. La principal diferencia entre el ajuste zlib y gzip es que el ajuste zlib es más compacto, seis bytes frente a un mínimo de 18 bytes para gzip, y la verificación de integridad, Adler-32, se ejecuta más rápido que el CRC-32 que usa gzip. Los programas que leen y escriben .zip formato, que es otro formato que envuelve desinflar datos comprimidos.

zlib ahora se usa ampliamente para la transmisión y el almacenamiento de datos. Por ejemplo, la mayoría de las transacciones HTTP realizadas por servidores y navegadores comprimen y descomprimen los datos utilizando zlib, específicamente el encabezado HTTP. Content-Encoding: deflate significa desinflar el método de compresión envuelto dentro del formato de datos zlib.

Diferentes implementaciones de deflate pueden dar como resultado una salida comprimida diferente para los mismos datos de entrada, como lo demuestra la existencia de niveles de compresión seleccionables que permiten intercambiar la efectividad de la compresión por el tiempo de la CPU. zlib y PKZIP no son las únicas implementaciones de desinflado de compresión y descompresión. Tanto la utilidad de archivo 7-Zip como la biblioteca zopfli de Google tienen la capacidad de usar mucho más tiempo de CPU que zlib para exprimir los últimos bits posibles cuando se usa el formato desinflar, reduciendo los tamaños comprimidos en un pequeño porcentaje en comparación con el más alto de zlib. nivel de compresión. La utilidad pigz, una implementación paralela de gzip, incluye la opción de usar zlib (niveles de compresión 1-9) o zopfli (nivel de compresión 11), y mitiga de alguna manera el impacto de tiempo de usar zopfli al dividir la compresión de archivos grandes en múltiples procesadores y núcleos.

ZIP es un formato de archivo que se utiliza para almacenar una cantidad arbitraria de archivos y carpetas junto con compresión sin pérdidas. No hace suposiciones estrictas sobre los métodos de compresión utilizados, pero se utiliza con mayor frecuencia con DEFLATE.

Gzip es a la vez un algoritmo de compresión basado en DEFLATE pero menos cargado de posibles patentes y otros, y un formato de archivo para almacenar un solo archivo comprimido. Admite la compresión de una cantidad arbitraria de archivos y carpetas cuando se combina con tar. El archivo resultante tiene una extensión de .tgz o .tar.gz y comúnmente se llama tarball.

zlib es una biblioteca de funciones que encapsulan DEFLATE en su encarnación LZ77 más común.

La diferencia más importante es que gzip solo es capaz de comprimir un solo archivo, mientras que zip comprime varios archivos uno por uno y luego los archiva en un solo archivo. Por lo tanto, gzip viene junto con tar la mayor parte del tiempo (aunque existen otras posibilidades). Esto viene acompañado de algunas (des) ventajas.

Si tiene un archivo grande y solo necesita un solo archivo, debe descomprimir todo el archivo gzip para acceder a ese archivo. Esto no es necesario si tiene un archivo zip.

Por otro lado, si comprime 10 archivos similares o incluso idénticos, el archivo zip será mucho más grande porque cada archivo se comprime individualmente, mientras que en gzip en combinación con tar se comprime un solo archivo, lo que es mucho más efectivo si los archivos son similar (igual).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *