¿Qué formato de archivo / compresión?

8

Zip, Rar, 7z, Gzip, BZip2, Tar, etc. Escuché que 7z es el sabor del mes, ¿por qué? ¿Es mejor para todas las situaciones o hay mejores opciones para situaciones específicas?

¿O tal vez el archivo de archivo real, es decir, WinZip, WinRar, 7Zip, etc. (a diferencia del formato) tiene un efecto mayor?

En su respuesta, ¿podría describir qué tipo de compensación de velocidad / compresión utiliza su formato mencionado?

Proporcione enlaces a cualquier prueba empírica que respalde su respuesta.

Antecedentes: necesito hacer una copia de seguridad de un índice de búsqueda personalizado que crea aproximadamente 3000 archivos relativamente pequeños (menos de 10 MB), cada uno con una gran cantidad de datos repetitivos.

(Como de costumbre, Wikipedia tiene un artículo relevante, pero la sección sobre comparación de rendimiento es breve).

Gracias

Ceniza
fuente

Respuestas:

14

Compress, Gzip, Bzip, Bzip2 no son para archivar múltiples archivos. Solo comprimen un solo archivo. Para archivar se usan generalmente con TAR. El problema con TAR es que no tiene tabla de índice . Solo es bueno si planeas restaurar todo . Si espera que alguna vez necesite restaurar solo un número limitado de archivos seleccionados, olvídese de TAR. Para obtener el último archivo tar.gzo tar.bz2archivo, debe descomprimirlo y procesarlo todo . En el caso de zip, rar o 7-zip, irá a la tabla de índice, saltará a la posición relevante del archivo y solo procesará los archivos relevantes.

Ok, TAR está fuera, así que eso te deja con ZIP, RAR y 7-ZIP. De estos tres, ZIP es el más proliferado, casi todo lo admite, muchas aplicaciones tienen soporte incorporado. Y es rapido. Por otro lado, 7-ZIP también es portátil, la biblioteca es LGPL y tiene tasas de compresión mucho mejores que las otras dos, lo que supone un costo por consumir más CPU. RAR es un verdadero perdedor allí, ni una gran compresión, ni realmente portátil, ni rápido.

EDITAR: parece que la mejor opción sería 7-ZIP, pero con el método de compresión bzip2. De esta manera, no tendrá las desventajas de TAR, pero aún podrá aprovechar el soporte multinúcleo bzip2. Ver este artículo

vartec
fuente
Excelente información, gracias. Había visto TAR en mi juego con Linux, pero nunca lo había mirado de cerca.
Ash
Tendría que desaprobar sobre rar. La compresión es buena (en comparación con al menos gzip) y la velocidad parece estar bien en mis casos de uso. Una cosa que me gusta de rar es que puede manejar contenido de transmisión o archivos individuales, y le permite incluir automáticamente una marca de tiempo en el nombre del archivo ...
Dscoduc
10

Lectura recomendada:

Compresión de archivos en la era de múltiples núcleos (Jeff Atwood, alias CodingHorror, febrero de 2009)

He estado jugando un poco con la compresión de archivos nuevamente, ya que generamos algunos archivos de respaldo muy grandes diariamente en Stack Overflow.

Estamos utilizando la última versión de 64 bits de 7zip (4.64) en nuestro servidor de base de datos. No soy un gran admirador de más de doble núcleo en el escritorio, pero es una obviedad para los servidores. ¡Cuantos más núcleos de CPU, mejor! Este servidor tiene dos CPU de cuatro núcleos, un total de 8 núcleos, y estaba un poco desanimado al descubrir que ni RAR ni 7zip parecían hacer mucho uso de más de 2.

Aún así, incluso si solo usa 2 núcleos para comprimir, el algoritmo 7zip es increíblemente efectivo y ha evolucionado en los últimos años para ser respetablemente rápido. Solía ​​recomendar RAR sobre Zip, pero dada la mayor eficiencia de 7zip y el hecho de que es gratis y RAR no lo es, es la opción lógica ahora.

Y con respecto a los algoritmos:

¿Por qué bzip2 puede funcionar mucho más rápido que 7zip? [...] Bzip2 usa más de 2 núcleos de CPU para paralelizar su trabajo.

splattne
fuente
Gracias por el enlace. ¡Ciertamente sabemos que la visión de Jeff se basa en la experiencia de la vida real!
Ash
4

No se trata solo de eficiencia y velocidad. Claro que son importantes y puede mirar los puntos de referencia para esos y elegir sabiamente entre las opciones (aunque recomendaría algunos puntos de referencia simples con sus propios datos en su propio servidor). Pero el archivo inevitablemente conduce en algún momento al acceso a sus datos nuevamente (de lo contrario, ¿por qué no simplemente eliminarlos?). O tal vez en el futuro, no será usted el que acceda a los datos, sino alguien de terceros. Elija algo que estará disponible cuando necesite acceder a los datos y algo que la gente reconozca. Yo personalmente uso 7zip, pero cuando archivo archivos que otros pueden necesitar, uso zip. Lo saben, muchas herramientas pueden manejarlo. Puede que no sea tan rápido o tan pequeño, pero ayuda con el factor humano.

Joshua Hunter
fuente
Buen punto. Este índice de búsqueda extraerá datos directamente de ciertos archivos comprimidos. Es por eso que estoy interesado si hay algún formato que ofrezca un rendimiento de compresión / descompresión configurable. Así que estoy mirando más el aspecto de compresión que el archivo para el aspecto futuro.
Ash
3

Parece que lzma funciona muy bien tanto en relación de compresión como en velocidad.

En los siguientes http://tukaani.org/lzma/benchmarks benchmarks, la configuración más rápida para lzma proporcionó tiempos de compresión considerablemente más rápidos que la opción bzip2 más rápida, y al mismo tiempo mejor compresión que la opción más lenta bzip2:

    ratio bzip2 lzmash
    más rápido 35.8% 31.7%       
    más lento 34.0% 25.4%

    tiempo bzip2 lzmash  
    más rápido 1m 26s 0m 58s  
    más lento 2m 37s 12m 20s

    * Comprimir la instalación completa de OpenOffice.org 1.1.4 para Linux (203 MB) 

Funciona especialmente bien con datos binarios, pero creo que leí algunos puntos de referencia de texto plano donde bzip2 lo superó.

Vale la pena leer la página de manual de lzma:

   lzma  provides  notably  better compression ratio than bzip2 especially
   with files having other than plain text content. The other advantage of
   lzma  is fast decompression which is many times quicker than bzip2. The
   major disadvantage is that achieving  the  highest  compression  ratios
   requires  extensive  amount of system resources, both CPU time and RAM.
   Also software to handle LZMA  compressed  files  is  not  installed  by
   default on most distributions.
Guy C
fuente
Yo tampoco hasta la semana pasada cuando alguien lo recomendó en una de mis preguntas de Falla del servidor. Parece impresionante, solo vale la pena investigar el rendimiento con texto plano, si lo usará para eso.
Guy C
LZMA es el nombre del algoritmo utilizado en 7-zip.
vartec
2

Echa un vistazo a esta entrada de Wikipedia . Hacia el fondo, "Comparación de eficiencia". Le dará un porcentaje de compresión y el tiempo necesario, aproximadamente. Todos esos números variarán (en cuanto a la velocidad) en función de la velocidad de la máquina utilizada, la cantidad de memoria, etc.

Más puntos de referencia de compresión:


fuente
Gracias, pero he leído eso y pensé que fue un poco breve (vea mi punto en la pregunta). ¿Conoces alguna prueba más detallada en escenarios más variados?
Ash
Se agregaron un par de enlaces que espero brinden más información.
2

Comparando zip, 7z, rar con dos estuches

Depende de lo que esté comprimiendo exactamente, pero en general 7z hace un mejor uso de múltiples procesadores, y el formato de compresión 7z en sí mismo produce una compresión más alta que zip, y a veces más alta que rar (aunque rar y 7z son casi equivalentes, pero rar isn no es gratis ...)

Mis pruebas hace unos meses dieron estos resultados:

Comprimir un único archivo de base de datos de acceso de 10 MB:

Database.mdb 17,240,064 (original)
Database.zip  1,634,794 (Regular zip, 11:1)
Database.rar    262,212 (RAR compression, 66:1)
Database.7z     195,678 (7-zip compression, 88:1)

Comprimí una carpeta que contenía más de nueve mil archivos de diferentes tipos (903,488 KB) y obtuve lo siguiente (esta es una combinación de código fuente y todas las herramientas que lo rodean para el software que se está desarrollando):

Type   Time  Size (KB)  Compression
ZIP    7:28   247,529   3.7:1
RAR    8:15   222,232   4.1:1
7z    10:49   181,633   5.0:1

Para fines de tiempo, esto fue en un Core2 Duo, 2GHz, 1GB de RAM y un disco duro barato.

Entonces 7z dio una mejora sustancial en la relación de compresión en los dos casos que probé más allá de zip, e incluso mejoré en rar, pero 7z fue ciertamente más lento. No significativamente, pero lo suficiente como para ser notado.

-Adán

Adam Davis
fuente
Buenas pruebas. Esa compresión MDB es enorme. Solo obtengo 4 a 1 en los archivos de palabras de índice binario de 100k que probé. Supongo que muestra lo importante que es probar usando archivos / datos similares a los que usará su sistema.
Ash
Sí, los archivos MDB son peludos y no tienen sustancia. Un archivo binario tendrá menos (porque usa los 8 bits, mientras que los archivos de texto usan poco más de 6 bits) y es muy probable que no haya mucha duplicación. Aunque siempre es importante probarlo. Es posible que tenga más suerte jugando con la configuración de compresión; a veces puede optimizarla para el uso y mejorarla de lo que proporciona la configuración estándar.
Adam Davis,
0

Acabo de instalar dar (pero aún no he tenido la oportunidad de jugar con él). Es similar al alquitrán con compresión gzip o bzip2, con la capacidad adicional de dividir el archivo en varias partes y calcular la paridad para que si una o más partes están dañadas, se pueda reconstruir a partir de los archivos de paridad.

pgs
fuente