¿Mayor compresión para archivos (para transferencia web)?

14

He visto algunos archivos muy comprimidos, como 700 MB de datos comprimidos a unos 30-50 MB.

Pero, ¿cómo se obtienen esos archivos comprimidos? He intentado usar software como WinRAR y 7Zip, pero nunca he logrado una compresión tan alta.

¿Cuáles son las técnicas / software que le permiten comprimir archivos tan bien?

(PD: estoy usando Windows XP)

rzlines
fuente
Buena idea ... ¿pero de dónde sacas esos archivos?
Robinicks
3
He visto 7zip comprimir archivos de registro del servidor (principalmente texto) hasta aproximadamente el 1% de su tamaño original.
Umber Ferrule
2
Abra el Bloc de notas. Escriba 1 mil millones de veces "A". Guardar, luego comprimir. ¡GUAUU! Cree una aplicación que escriba mil millones de números aleatorios (verdaderos) en un archivo. Comprime eso. Huh
igrimpe
igrimpe: muchos algoritmos de compresión indexan patrones. Mil millones de A es una A mil millones de veces. Puede comprimir eso a [A] {1, 1000000000}. Si tiene mil millones de números aleatorios, se hace difícil hacer una coincidencia de patrones ya que cada número consecutivo en un subconjunto dado disminuye la probabilidad de un subconjunto de coincidencia exponencialmente.
AaronF

Respuestas:

11

Si el tiempo necesario para comprimir los datos no es un problema, puede optimizar el tamaño comprimido utilizando varias herramientas diferentes juntas.

Comprima los datos varias veces utilizando diferentes herramientas como 7zip, winrar (para zip) y bjwflate.

(Tenga en cuenta que esto no significa comprimir el archivo zip una y otra vez, sino crear una cantidad de archivos zip alternativos utilizando diferentes herramientas)

A continuación, ejecute deflopt en cada archivo para reducir cada archivo un poco más.

Finalmente, ejecute zipmix en la colección de archivos. Dado que diferentes herramientas zip son mejores en diferentes archivos, zipmix selecciona la mejor versión comprimida de cada archivo de cada uno de los archivos y produce una salida que es más pequeña que cualquiera de las herramientas zip que podrían haber producido individualmente.

Sin embargo, debe tener en cuenta que esto no garantiza que funcione ningún tipo de magia en sus archivos. Ciertos tipos de datos simplemente no se comprimen muy bien, como JPEG y MP3. Estos archivos ya están comprimidos internamente.

izb
fuente
44
Los archivos JPEG y MP3 no están comprimidos. Están comprimidos pero no comprimidos.
KovBal
Este es un consejo increíblemente pobre, tratar de usar múltiples algoritmos de compresión secuencialmente es una muy mala idea. Cada algoritmo crea un archivo comprimido + gastos generales, por lo que al usar múltiples, en realidad está agregando datos a los datos que está tratando de comprimir: es como tratar de cavar un agujero en la arena, cuanto más profundo va, más arena se vierte tú. Es mucho mejor usar un solo algoritmo bueno con la configuración de compresión máxima.
Tacroy
Creo que malinterpretas ... los mismos datos no se vuelven a comprimir repetidamente. En cambio, simplemente está eligiendo el mejor algoritmo individual por archivo en lugar de por archivo.
izb
66
Comprimir los datos varias veces es bastante engañoso.
ta.speot.is
12

Esto depende completamente de los datos que se comprimen.

El texto se comprime muy bien, los formatos binarios no tan bien y los datos comprimidos (mp3, jpg, mpeg) no lo son en absoluto.

Aquí hay una buena tabla de comparación de compresión de wikipedia.

Nifle
fuente
Soy consciente de que la compresión depende del tipo de datos, pero ¿hay alguna técnica específica que lo ayude a comprimir más los archivos?
rzlines
3
Una vez que haya comprimido algo, por lo general es imposible reducirlo considerablemente. Solo tiene que seleccionar el método de compresión apropiado para sus datos.
Nifle
El texto se puede comprimir fácilmente hasta el 90%.
Georg Schölly
@ GeorgSchölly: Eso es excelente. Porque puedo convertir cualquier dato en texto, por ejemplo, convertir cada byte binario en dos dígitos hexadecimales mostrados en texto. Eso duplicaría mi tamaño, pero luego ahorrar el 90% del tamaño duplicado da como resultado un ahorro general del 80%. (O, podría usar base64 para un poco más de eficiencia en la conversión de binario a texto). ¡Estas son noticias asombrosamente grandiosas! :)
TOOGAM
8

¡Las respuestas anteriores son incorrectas en un orden de magnitud!

El mejor algoritmo de compresión con el que tengo experiencia personal es paq8o10t (consulte la página zpaq y el PDF ).

Sugerencia: el comando para comprimir archivos_o_carpetas sería como:

paq8o10t -5 archive files_or_folders

Tamaño de archivo versus tiempo para comprimir y extraer 10 GB (79,431 archivos) a un disco duro USB externo en la configuración predeterminada y máxima en una computadora portátil Dell Latitude E6510 (Core i7 M620, 2 + 2 hyperthreads, 2.66 GHz, 4 GB, Ubuntu Linux , Vino 1.6).  Datos de 10 GB de referencia (sistema 4).

Fuente: utilidad de copia de seguridad de diario incremental y archivador

Puede encontrar un espejo del código fuente en GitHub .


Un algoritmo de compresión un poco mejor, y ganador del Premio Hutter , es decomp8 (ver enlace en la página del premio). Sin embargo, no hay ningún programa de compresor que pueda usar realmente.


Para archivos realmente grandes, lrzip puede lograr relaciones de compresión que son simplemente cómicas .

Un ejemplo de README.benchmarks:


Tomemos seis árboles de kernel con una versión aparte como tarball, linux-2.6.31 a linux-2.6.36. Estos mostrarán mucha información redundante, pero con cientos de megabytes de diferencia, que lrzip será muy bueno para comprimir. Para simplificar, solo se comparará 7z, ya que es el mejor compresor de uso general en este momento:

Estos son puntos de referencia realizados en un Intel Core2 de doble núcleo de 2.53Ghz con 4GB de ram usando lrzip v0.5.1. Tenga en cuenta que se estaba ejecutando con un espacio de usuario de 32 bits, por lo que solo era posible el direccionamiento de 2 GB. Sin embargo, el punto de referencia se ejecutó con la opción -U que permite que todo el archivo se trate como una gran ventana de compresión.

Tarball de 6 núcleos consecutivos.

Compression    Size                 Percentage      Compress    Decompress
None           2373713920           100             [n/a]       [n/a]
7z             344088002            14.5            17m26s      1m22s
lrzip          104874109            4.4             11m37s      56s
lrzip -l       223130711            9.4             05m21s      1m01s
lrzip -U       73356070             3.1             08m53s      43s
lrzip -Ul      158851141            6.7             04m31s      35s
lrzip -Uz      62614573             2.6             24m42s      25m30s
Alexander Riccio
fuente
Está optimizado para proporcionar una relación de compresión máxima, pero es enormemente más lento que los competidores cercanos.
Eric J.
2
@Eric J. sí, pero la pregunta no especificó la velocidad de compresión / descompresión;)
Alexander Riccio
3

Squeezechart.com contiene comparaciones de varias tasas de compresión. Aunque, como lo indica la respuesta de Nifle, es poco probable que obtenga tasas de compresión tan altas para formatos binarios.

idan315
fuente
2

La mayoría de las herramientas de compresión tienen configuraciones que le permiten lograr una tasa de compresión más alta con un compromiso de tiempos de compresión / descompresión más lentos y más uso de RAM.

Para 7-Zip, busque "Agregar al cuadro de diálogo de archivo" en la ayuda integrada para obtener más detalles.

Tom Robinson
fuente
2

Puede probar 7zip con la siguiente configuración ultra:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on big_file.mysql.7z big_file.mysql
kenorb
fuente
2

Simplemente consulte el Resumen de las pruebas de referencia de compresión de archivos múltiples que tiene la mejor lista de compresión que consiste en la referencia de compresión completa.

Top 30

ingrese la descripción de la imagen aquí

Los mejores resultados (basados ​​en la compresión) en esta prueba son PAQ8 y WinRK (PWCM). Son capaces de comprimir el conjunto de pruebas de más de 300 Mb a menos de 62 Mb (80% de reducción de tamaño) pero tardan un mínimo de 8,5 horas en completar la prueba. El programa número uno (PAQ8P) lleva casi 12 horas y el número cuatro (PAQAR) incluso 17 horas para completar la prueba. WinRK, el programa con la segunda mejor compresión (79.7%) toma alrededor de 8,5 horas. No es sorprendente que todos los programas mencionados utilicen un motor PAQ (similar) para la compresión. Si tiene archivos con imágenes incrustadas (por ejemplo, archivos Word DOC) use PAQ8, los reconocerá y los comprimirá por separado, lo que aumentará significativamente la compresión. Todos los programas mencionados (excepto WinRK) son gratuitos.

LifeH2O
fuente
1

Su mejor apuesta aquí parece ser prueba y error. Pruebe todas sus técnicas de compresión disponibles en cada archivo y elija el mejor para poner en su sitio web. Afortunadamente, las computadoras hacen este tipo de cosas bastante rápido y no se aburren. Podría escribir un script simple para automatizar el proceso para que sea "relativamente indoloro".

Simplemente no esperes milagros: 700 mb hasta 30 mb simplemente no sucede con tanta frecuencia. Archivos de registro como se mencionó anteriormente: sí. "Su archivo promedio" - de ninguna manera.

hotei
fuente