51

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

Какие настройки лучше всего использовать при сжатии текстового файла в формат zip, когда мне нужен только небольшой размер файла?

Варианты 7zip

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

4 ответа4

48

Чтобы создать наименьший стандартный ZIP-файл, который может создать 7-Zip, попробуйте:

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

Источник: Как я могу добиться лучшего, стандартного сжатия ZIP?

В противном случае, если вас не интересует стандарт ZIP, используйте следующие настройки ультра:

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

Которые:

-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
11

Если вы можете использовать формат .7z, а не просто .zip, я бы просто использовал PPMD со следующими параметрами и оставил бы все остальное, как установлено уровнем сжатия:

  • Формат архива: 7z
  • Метод сжатия: PPMD
  • Уровень компрессии: Ультра

Я регулярно сжимаю серверные / текстовые журналы (60 МБ +), используя эти параметры, и они обычно выходят на 1-2% от исходного размера.

6

Я сравниваю для db.fdb 1,2 ГБ (1236598784 B) на сервере Ubuntu 14.04.03 с p7zip [64] 9.20 на ВМ:

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

и получить такие результаты:

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"

Я думаю, что второй метод работает хорошо = (почти) лучший компресс с лучшим временем. Но для лучшего "просмотра" и легкости запоминания это первый метод - с небольшими файлами и без точки максимального сжатия. Между 2 и 3 методами мы не получаем 7z меньше, а тратим на сжатие почти вдвое больше времени. Каждый решит со своим.

0

Установите в поле «split to volume, bytes» максимально допустимый размер файла сервера (я думаю, в байтах, хотя он принимает общие сокращения, такие как "КБ" и "МБ"). Если размер zip-файла превышает этот размер, 7-zip автоматически разделит его на несколько файлов, таких как integra_serviceLog.zip.001, gration_serviceLog.zip.002 и т.д. (Когда-то, когда PK Zip использовал это, чтобы охватить zip-файлы на нескольких дискетах.) Для распаковки вам понадобятся все файлы. Используйте это вместо того, чтобы беспокоиться об абсолютных наилучших настройках сжатия, которые нужно использовать для любого конкретного набора файлов, потому что то, что лучше для одного файла, может отличаться для другого файла, и вам не нужно проходить это каждый раз, когда вам нужно копировать логи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .