2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69

Какие лучшие варианты использовать при сжатии файлов с помощью 7 Zip?

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

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

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

Ответы (6)

65
65
65
2014-04-15 15:15:36 +0000

Чтобы создать самый маленький стандартный 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
14
14
14
2013-07-15 10:33:24 +0000

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

  • Архивный формат: 7z
  • Метод сжатия: PPMD
  • Уровень сжатия: Ultra

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

8
8
8
2019-06-17 16:25:32 +0000

После долгих экспериментов, копания в подробной документации 7zip, и чтение некоторых из исходных кодов 7z, касающихся расширенных параметров LZMA2, вот лучший метод ниже. Он сократил некоторые 1 Гб реальные файлы тестирования ** более чем в 2-4 раза лучше, чем ранее принятые решения** размещены здесь или даже в 7z manpage.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

Сжатие LZMA2 предполагается здесь, но вы, возможно, сможете получить еще лучшую производительность в 7zip с передачей расширенных параметров LZMA2, как -m0=LZMA2:27, или -m0=LZMA2:d25, или массив параметров, как

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Такие параметры, кажется, не были соблюдены 7z версии, которые я тестировал, но вы, возможно, захотите исследовать дальше или исправить код 7z, чтобы правильно разобрать их. А может быть, он должен работать и просто ломается в тестируемых сборках.

7
7
7
2016-08-15 13:27:49 +0000

Я сравниваю для 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, но платим почти вдвое больше времени для сжатия. Каждый решает сам.

3
3
3
2019-12-05 09:37:09 +0000

Я решил провести несколько экспериментов для эмпирического нахождения оптимальных параметров сжатия.

Инструмент, который я использовал wa 7-ZIP finetuner . Этот инструмент охотится за оптимальными параметрами, просто повторяя компрессию с различными параметрами, ища оптимальную комбинацию. Запуск для одного файла иногда может занять более часа даже на быстродействующем компьютере.

Параметры, которые он пытается найти:

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

Я оставил параметры по умолчанию - размер словаря 512 МБ и размер твердого блока включен. Инструмент использует метод LZMA.

Лучшие комбинации параметров на нескольких типах файлов были следующие:

Заметьте, что лучшие значения не были постоянными даже для файлов одного типа.

Заключение: Лучших вариантов нет, так как каждый файл может иметь свою уникальную лучшую комбинацию. Можно довести все параметры до предела, но улучшение не гарантировано.

Кажется, что наиболее распространенная комбинация:

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

Некоторые 7-Zip ссылки:

0
0
0
2011-05-10 14:37:36 +0000

Установите в поле “split to volume, bytes” (разделить на объем, байты) максимально допустимый размер файла на сервере (в байтах, я думаю, хотя это выглядит так, как будто он принимает общие сокращения типа “KB” и “MB”). Если zip-файл превысит этот размер, 7-zip автоматически разделит его на несколько файлов, таких как integration_serviceLog.zip.001, integration_serviceLog.zip.002 и т.д. (В прошлом PK Zip использовал это для разделения zip-файлов на несколько дискет). Вам понадобятся все файлы, чтобы распаковать их. Используйте это, вместо того, чтобы беспокоиться об абсолютных лучших настройках сжатия для определенного набора файлов, потому что то, что лучше для одного файла, может быть разным для другого файла, и вам не нужно будет проходить через это каждый раз, когда вам нужно скопировать лог-файлы.