Comprima archivos zip con mayor compresión

10

Tengo una gran cantidad de archivos zip que se comprimieron con el comando zip. Me gustaría volver a comprimirlos con el indicador -9 para mejorar la relación de compresión. ¿Alguien sabe si eso se puede hacer sin descomprimir manualmente y luego comprimir?

PD. Necesito guardarlos como archivos zip ya que se sirven a los usuarios de Windows (y como tales tienen espacios en blanco en sus nombres)

Inteligente
fuente
La nueva compresión solo es posible descomprimiendo el archivo y comprimiéndolo nuevamente. depende del algoritmo También puedes probar bzip2 o incluso mejor xz.
Consejo: esto también se puede hacer con archivos XLSX o XLSM Excel, ya que en realidad son archivos ZIP que contienen XML y otras cosas.
Cristian Ciupitu

Respuestas:

10

No puede mejorar la relación de compresión sin descomprimir los datos. No tiene que extraer todos los archivos zip antes de comprimirlos, pero recomendaría descomprimir un archivo zip completo antes de volver a comprimirlos.

Es posible volver a comprimir los archivos en un archivo zip de uno en uno y volver a agregarlos antes de pasar al siguiente archivo contenido en el archivo zip. Esto requiere N reescrituras del archivo zip para un archivo zip que contenga N archivos. Es mucho más eficiente extraer los archivos N y generar el nuevo archivo zip de una sola vez, comprimiendo todos los archivos -9.

Anthon
fuente
1
Mi objetivo no es evitar la descompresión, sino mantener la estructura del archivo igual. y no cambiar ningún metadato de archivo.
Smartelf
1
@Smartelf No creo que puedas evitar la descompresión. Sus otros requisitos son posibles, no hay ninguna razón por la que los datos tengan que cambiar.
terdon
2
@Smartelf como ya indiqué, ** tienes que ** volver a comprimir. Asignar los mismos metadatos de archivo no debería ser un problema si lo hace, por ejemplo, con un programa Python y su módulo zip. Con unzip/ zipmantener los metadatos iguales es probablemente más difícil.
Anthon
6

Hay una utilidad llamada AdvanceCOMP que hace exactamente lo que estás buscando. Recomprime archivos ZIP y GZ (y algunos otros) sin extracción intermedia en el disco. (Creo que el mecanismo utilizado es descomprimir los datos y volver a comprimirlos, pero eso no requiere escribir archivos en el disco o regenerar metadatos).

gaelicWizard
fuente