Сжатие ZIP-файлов с более высокой степенью сжатия


10

У меня есть большое количество zip-файлов, которые были сжаты с помощью команды zip. Я хотел бы повторно сжать их с флагом -9, чтобы улучшить степень сжатия. Кто-нибудь знает, может ли это быть сделано без распаковки и последующего сжатия вручную.

PS. Мне нужно сохранить их в виде zip-файлов, поскольку они предоставляются пользователям Windows (и поэтому в их именах есть пробелы)


повторное сжатие возможно только путем распаковки файла и повторного сжатия. это зависит от алгоритма. Вы также можете попробовать bzip2 или даже лучше xz.

Совет: это также может быть сделано с файлами Excel XLSX или XLSM, так как они на самом деле являются файлами ZIP, содержащими XML и другие файлы.
Кристиан Чиупиту

Ответы:


10

Вы не можете улучшить степень сжатия, не распаковывая данные. Вам не нужно извлекать все zip-файлы перед их сжатием, но я бы порекомендовал распаковать один целый zip-файл перед повторным сжатием.

Можно повторно сжать файлы в zip-файле по одному и повторно добавить их перед переходом к следующему файлу, содержащемуся в zip-файле. Это требует N перезаписываний zip-файла для zip-файла, содержащего N файлов. Гораздо эффективнее извлечь N файлов и сгенерировать новый zipfile за один раз, сжав все файлы с помощью -9.


1
Моя цель не избежать декомпрессии, а сохранить структуру архива неизменной. и не изменять какие-либо метаданные файла.
Смартельф

1
@Smartelf Я не думаю, что вы можете избежать декомпрессии. Ваши другие требования возможны, нет никаких причин, по которым какие-либо данные должны были бы измениться.
Terdon

2
@ Smartelf, как я уже указывал, вы ** должны ** повторно сжать. Назначение одинаковых метаданных файла не должно быть проблемой, если вы делаете это, например, с помощью программы на Python и ее zip-модуля. С unzip/ zipсохранения метаданных такими же, вероятно , более трудная.
Anthon

6

Существует утилита под названием AdvanceCOMP, которая делает именно то, что вы ищете. Он сжимает файлы ZIP и GZ (и некоторые другие) без промежуточного извлечения на диск. (Я верю, что используемый механизм заключается в том, чтобы распаковать данные и повторно сжать их, но это не требует записи файлов на диск или восстановления метаданных.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.