У меня есть большое количество zip-файлов, которые были сжаты с помощью команды zip. Я хотел бы повторно сжать их с флагом -9, чтобы улучшить степень сжатия. Кто-нибудь знает, может ли это быть сделано без распаковки и последующего сжатия вручную.
PS. Мне нужно сохранить их в виде zip-файлов, поскольку они предоставляются пользователям Windows (и поэтому в их именах есть пробелы)
linux
zip
compression
Smartelf
источник
источник
Ответы:
Вы не можете улучшить степень сжатия, не распаковывая данные. Вам не нужно извлекать все zip-файлы перед их сжатием, но я бы порекомендовал распаковать один целый zip-файл перед повторным сжатием.
Можно повторно сжать файлы в zip-файле по одному и повторно добавить их перед переходом к следующему файлу, содержащемуся в zip-файле. Это требует N перезаписываний zip-файла для zip-файла, содержащего N файлов. Гораздо эффективнее извлечь N файлов и сгенерировать новый zipfile за один раз, сжав все файлы с помощью
-9
.источник
unzip
/zip
сохранения метаданных такими же, вероятно , более трудная.Существует утилита под названием AdvanceCOMP, которая делает именно то, что вы ищете. Он сжимает файлы ZIP и GZ (и некоторые другие) без промежуточного извлечения на диск. (Я верю, что используемый механизм заключается в том, чтобы распаковать данные и повторно сжать их, но это не требует записи файлов на диск или восстановления метаданных.)
источник