A menudo tengo que recopilar 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 formato zip.
¿Cuál es la mejor configuración para usar al comprimir un archivo de texto a un formato zip cuando mi única necesidad es un tamaño de archivo pequeño?
He hecho la compresión ultra obvia y elegida, y he notado que LZMA hace un mejor trabajo que desinflar, pero hay demasiadas otras opciones de opciones para que pueda probarlas todas.
compression
zip
7-zip
jjnguy
fuente
fuente
Deflate
formato, ya no es un archivo .zip "normal", sino un archivo zip "extendido", promovido por WinZip. Originalmente mantuvieron la extensión como .zip, para mucha consternación (ya que la mayoría de las herramientas normales de manejo de zip no pueden manejarlas), pero la mayoría de los archivadores usan .zipx ahora para distinguirlos de los archivos .zip tradicionales. Si puede usar LZMA, cambie a .7z y elija PPMd; debería comprimir mejor (¡y más rápido!) Para archivos de texto.Respuestas:
Para crear el archivo ZIP estándar más pequeño que 7-Zip puede crear, intente:
Fuente: ¿Cómo puedo lograr la mejor compresión ZIP estándar?
De lo contrario, si no le importa el estándar ZIP, use la siguiente configuración ultra:
Que son:
fuente
Si puede usar el formato .7z en lugar de solo .zip, simplemente usaría PPMD con las siguientes opciones y dejaría todo lo demás según lo establecido por el Nivel de compresión:
Comprimo regularmente registros de servidor / texto (60 MB +) usando estas opciones y generalmente salen al 1-2% del tamaño original.
fuente
Comparo para db.fdb 1,2 GB (1236598784 B) en el servidor Ubuntu 14.04.03 con p7zip [64] 9.20 en VM:
y tener ese resultado:
Creo que el segundo método funciona bien = (casi) la mejor compresión con el mejor tiempo. Pero para una 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 método 2 y 3 no obtenemos 7z más pequeños, pero pagamos casi dos veces más por la compresión. Cualquiera decida con los suyos.
fuente
Después de mucha experimentación, profundizando en la documentación detallada de 7zip y leyendo parte del código fuente de 7z con respecto a los parámetros avanzados de LZMA2, aquí hay un mejor método a continuación. Redujo algunos archivos de prueba del mundo real de 1 GB más de 2 a 4 veces mejor que las soluciones aceptadas anteriormente publicadas aquí o incluso en la página de manual de 7z.
Aquí se supone la compresión LZMA2, pero es posible que pueda obtener un rendimiento aún mejor en 7zip al pasar opciones avanzadas de LZMA2 como
-m0=LZMA2:27
, o-m0=LZMA2:d25
, o una serie de parámetros comoTales parámetros no parecían respetados por las versiones 7z que probé, pero es posible que desee explorar más a fondo o parchear el código 7z para analizarlos correctamente. O tal vez se supone que funciona y simplemente se rompe en las compilaciones que se probaron.
fuente
Establezca el campo "dividir en volumen, bytes" en el tamaño de archivo máximo permitido del servidor (en bytes, creo, aunque parece que acepta abreviaturas comunes como "KB" y "MB"). Si el archivo zip excede ese tamaño, 7-zip lo dividirá en múltiples archivos automáticamente, como Integration_serviceLog.zip.001 , Integration_serviceLog.zip.002 , etc. disquetes.) Necesitará que todos los archivos estén presentes para descomprimirlos. Úselo en lugar de preocuparse por la mejor configuración de compresión absoluta para un conjunto particular de archivos, porque lo que es mejor para un archivo puede ser diferente para otro archivo, y no desea tener que pasar por esto cada vez que lo necesite. copiar registros.
fuente