2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69

¿Cuáles son las mejores opciones para comprimir archivos con 7 Zip?

A menudo tengo que reunir archivos de registro y subirlos a un servidor central (propiedad de otra empresa). El servidor central tiene un límite de tamaño del archivo, por lo que estoy tratando de crear el archivo más pequeño posible que todavía está en el formato zip.

¿Cuál es la mejor configuración para comprimir un archivo de texto en formato zip cuando lo único que necesito es un archivo de pequeño tamaño?

He hecho lo obvio y he elegido la ultra compresión, y he notado que LZMA hace un mejor trabajo que deflate, pero hay demasiadas otras permutaciones de opciones para que pueda probarlas todas.

Respuestas (6)

65
65
65
2014-04-15 15:15:36 +0000

Para crear el archivo ZIP estándar más pequeño que puede crear 7-Zip, pruebe:

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

Fuente: ¿Cómo puedo lograr la mejor compresión ZIP estándar?

De lo contrario, si no le importa el estándar ZIP, utilice la siguiente configuración ultra:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Que son:

-t7z 7z archive

-m0=lzma
       lzma method

-mx=9 level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on
14
14
14
2013-07-15 10:33:24 +0000

Si puede utilizar el formato .7z en lugar de sólo el .zip, yo simplemente utilizaría PPMD con las siguientes opciones y dejaría todo lo demás tal y como lo establece el Nivel de Compresión:

  • Formato de Archivo: 7z
  • Método de compresión: PPMD
  • Nivel de compresión: Ultra

Regularmente comprimo logs de servidor/texto (60MB+) usando estas opciones y normalmente salen a un 1-2% del tamaño original.

8
8
8
2019-06-17 16:25:32 +0000

Después de mucha experimentación, indagando en la documentación detallada de 7zip, y leyendo algo del código fuente de 7z en relación con los parámetros avanzados de LZMA2, aquí hay un método mejor. Redujo algunos archivos de prueba de 1GB más de 2 a 4 veces mejor que las soluciones previamente aceptadas publicadas aquí o incluso en la página de manual de 7z.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

La compresión LZMA2 se asume aquí, pero podría ser capaz de obtener incluso un mejor rendimiento en 7zip pasando opciones avanzadas de LZMA2 como -m0=LZMA2:27, o -m0=LZMA2:d25, o un array de parámetros como

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Tales parámetros no parecen ser respetados por las versiones de 7z que probé, pero puede que quieras explorar más a fondo o parchear el código de 7z para analizarlos correctamente. O tal vez se supone que funciona y sólo está roto en las construcciones que se probaron.

7
7
7
2016-08-15 13:27:49 +0000

Comparo para db.fdb 1,2 GB (1236598784 B) en Ubuntu server 14.04.03 con p7zip [64] 9.20 en VM:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

y tengo estos resultados:

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

Creo que el segundo método funciona bien = (casi) la mejor compresión con el mejor tiempo. Pero para la mejor “vista” y fácil de recordar es el primer método - con archivos pequeños y sin punto de compresión máxima. Entre el 2 y el 3 método no obtenemos un 7z extra más pequeño pero pagamos casi doso más tiempo por la compresión. Cualquiera decide con su propio.

3
3
3
2019-12-05 09:37:09 +0000

He decidido hacer algunos experimentos para encontrar empíricamente los parámetros óptimos de compresión.

La herramienta que he utilizado es 7-ZIP finetuner . Esta herramienta busca los parámetros óptimos simplemente repitiendo la compresión con parámetros variables buscando la combinación óptima. La ejecución de un archivo puede tardar a veces más de una hora incluso en un ordenador rápido.

Los parámetros que prueba son:

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

He dejado los parámetros por defecto de tamaño de diccionario como 512 MB y tamaño de bloque sólido On. La herramienta utiliza el método LZMA.

Las mejores combinaciones de parámetros en varios tipos de archivos fueron las siguientes

Observo que los mejores valores no fueron constantes incluso para archivos del mismo tipo.

Conclusión: No hay mejores opciones, ya que cada archivo puede tener su propia y única mejor combinación. Uno puede llevar todos los parámetros hasta sus límites, pero no se garantiza una mejora en absoluto.

La combinación más común parece ser:

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

Algunas referencias de 7-Zip:

0
0
0
2011-05-10 14:37:36 +0000

Ajuste el campo “dividir en volumen, bytes” al tamaño máximo de archivo permitido por el servidor (en bytes, creo, aunque parece que acepta abreviaturas comunes como “KB” y “MB”). Si el archivo zip supera ese tamaño, 7-zip lo dividirá en varios archivos automáticamente, como integration_serviceLog.zip.001, integration_serviceLog.zip.002, etc. (Hace tiempo, PK Zip utilizaba esto para repartir los archivos zip en varios disquetes). Necesitará que todos los archivos estén presentes para poder descomprimirlos. Utiliza esto en lugar de preocuparte por la mejor configuración de compresión para cualquier conjunto de archivos en particular, porque lo que es mejor para un archivo puede ser diferente para otro archivo, y no quieres tener que pasar por esto cada vez que necesites copiar registros.