compression - descomprimir - gzip windows 10
¿Cómo se relacionan zlib, gzip y zip? ¿Qué tienen en común y en qué se diferencian? (3)
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 el alquitrán la mayor parte del tiempo (aunque existen otras posibilidades). Esto viene con 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 cual es mucho más efectivo si los archivos son similar (igual).
El algoritmo de compresión utilizado en zlib es esencialmente el mismo que el de gzip y zip . ¿Qué son gzip y zip ? ¿Cómo son diferentes y cómo son iguales?
ZIP es un formato de archivo utilizado para almacenar un número arbitrario de archivos y carpetas junto con una 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 tanto un algoritmo de compresión basado en DEFLATE pero menos comprometido con patentes potenciales y otros, y un formato de archivo para almacenar un solo archivo comprimido. Admite la compresión de un número arbitrario 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 encapsula DEFLATE en su encarnación LZ77 más común.
Forma corta:
.zip
es un formato de archivo que utiliza, generalmente, el método de compresión Deflate . El formato .gz
gzip es para archivos individuales, también utiliza 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 el código de compresión y descompresión de Deflate para su uso con zip, gzip, png (que utiliza el contenedor zlib en los datos de 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 los 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, pueden ser encriptados 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 (EFS)
15 - Reserved by PKWARE
16 - Reserved by PKWARE
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture (PFS)
97 - WavPack compressed data
98 - PPMd version I, Rev 1
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 están en diferentes cantidades de uso. El único método en uso realmente extendido en el formato ZIP es el método 8, Deflate y, en menor medida, el método 0, que no es compresión en absoluto. Prácticamente todos los archivos .zip
que se encontrarán en la naturaleza utilizarán exclusivamente los métodos 8 y 0, probablemente solo el método 8. (El método 8 también tiene un medio para almacenar efectivamente los datos sin compresión y relativamente poca expansión, y el método 0 no puede ser transmitido 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, tal como se utiliza en archivos de archivo Java (.jar), archivos Office Open XML (Microsoft Office .docx, .xlsx, .pptx), documento de Office 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 el no cifrado o las firmas.
Alrededor de 1990, el grupo Info-ZIP escribió implementaciones de código abierto, portátiles y gratuitas de las utilidades zip
y unzip
, que admiten la compresión con el formato Deflate y la descompresión de eso y los formatos anteriores. Esto amplió enormemente el uso del formato .zip
.
A principios de los años 90, el formato gzip fue desarrollado como un reemplazo para la utilidad de compress
Unix , derivado del código Deflate en las utilidades de Info-ZIP. La compress
Unix fue diseñada para comprimir un solo archivo o secuencia, agregando un .Z
al nombre del archivo. compress
utiliza el algoritmo de compresión LZW , que en ese momento estaba bajo patente y su uso libre estaba en disputa por los titulares de la patente. Aunque algunas implementaciones específicas de Deflate fueron patentadas por Phil Katz, 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. La utilidad gzip
Unix fue diseñada como un reemplazo directo para compress
, y de hecho puede descomprimir compress
datos compress
(suponiendo que usted pudo analizar esa oración). gzip
agrega un .gz
al nombre del archivo. gzip
utiliza el formato de datos comprimidos Deflate, que se comprime un poco mejor que la compress
Unix, tiene una descompresión muy rápida y agrega un CRC-32 como una verificación de integridad de los datos. El formato del encabezado también permite el almacenamiento de más información que el formato de compress
permitido, como el nombre del archivo original y la hora de modificación del archivo.
Aunque la compress
solo comprime un solo archivo, era común usar la utilidad tar
para crear un archivo de archivos, sus atributos y su estructura de directorios en un solo archivo .tar
, y luego comprimirlo con la compress
para crear un .tar.Z
Archivo .tar.Z
De hecho, la utilidad de tar
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 transfirió al formato gzip, y tar
tiene una opción para comprimir directamente al formato .tar.gz
. El formato tar.gz
comprime mejor que el enfoque .zip
, ya que la compresión de un .tar
puede aprovechar la redundancia en todos los archivos, especialmente en muchos archivos pequeños. .tar.gz
es el formato de archivo más común en uso en Unix debido a su alta portabilidad, pero también se usan métodos de compresión más efectivos, por lo que a menudo verá los archivos .tar.bz2
y .tar.xz
.
A diferencia de .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 archivo .zip
. Un archivo .tar
tendría que descomprimirse y escanearse de principio a fin para construir un directorio, que es como se muestra un archivo .tar
.
Poco después de la introducción de gzip, a mediados de la década de 1990, la misma disputa sobre patentes puso en tela de juicio el uso gratuito del formato de imagen .gif
, muy utilizado en los tablones de anuncios y en la World Wide Web (algo nuevo en ese momento). Así que un pequeño grupo creó el formato de imagen comprimido sin pérdida PNG, con el tipo de archivo .png
, para reemplazar .gif
. Ese formato también utiliza 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 la redundancia. Para promover el uso generalizado del formato PNG, se crearon dos bibliotecas de código libres. 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 ser usado por libpng, así como para otras aplicaciones. zlib fue adaptado del código gzip
.
Todas las patentes mencionadas han expirado desde entonces.
La biblioteca zlib admite la compresión y descompresión de Deflate, y tres tipos de ajuste alrededor de los flujos de deflate. Esos son: sin envoltura (desinflado "en bruto"), envoltura zlib , que se usa en los bloques de datos de formato PNG, y envoltura gzip, para proporcionar rutinas gzip para el programador. La principal diferencia entre el ajuste de zlib y gzip es que el ajuste de 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 utiliza gzip. Los programas que leen y escriben el formato .zip
, que es otro formato que envuelve la deflación de datos comprimidos, utilizan el desinflado sin formato.
zlib ahora se usa ampliamente para la transmisión y el almacenamiento de datos. Por ejemplo, la mayoría de las transacciones HTTP por servidores y navegadores comprimen y descomprimen los datos usando zlib.
Diferentes implementaciones de desinflado pueden dar como resultado diferentes resultados comprimidos para los mismos datos de entrada, como lo demuestra la existencia de niveles de compresión seleccionables que permiten compensar la efectividad de la compresión por el tiempo de CPU. zlib y PKZIP no son las únicas implementaciones de compresión de desinflado y descompresión. Tanto la utilidad de archivado 7-Zip como la biblioteca zopfli de Google tienen la capacidad de usar mucho más tiempo de CPU que zlib para extraer los últimos bits posibles al usar el formato desinflado, reduciendo los tamaños comprimidos en un pequeño porcentaje en comparación con los más altos 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 de alguna manera mitiga el impacto del tiempo de usar zopfli al dividir la compresión de archivos grandes en múltiples procesadores y núcleos.