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

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

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

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


89

Чтобы создать самый маленький стандартный 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 уровень сжатия = 9 (Ultra) -mfb = 64 количество быстрых байтов  для LZMA = 64-md = 32m размер словаря = 32 мегабайта-ms = на сплошном архиве = на  

Поделиться
Улучшить этот ответ
отредактировано 24 августа 2018 г. в 10:33
Bernd-L
9811 золотых знаков33 серебряных знака88 бронзовых знаков
ответил 15 апр. ’14 в 15:15
  • 3
    @Tek: Почему? Это нехорошо. Вопрос касался использования «стандартного формата ZIP», поэтому ответ не должен указывать на LZMA. -ms = on предназначен для файлов .7z, а не для стандартных zip-файлов. -md относится к BZip2, поэтому я не ожидаю, что это повлияет на ZIP (или даже LZMA). -mfb = 64 — неоптимизированное значение: -mfb = 258 делает zip-файлы меньшего размера. И в этом ответе даже не упоминается -mpass = 15, который может повлиять на zip-файлы. Это красиво оформленный ответ, который, к сожалению, неверен во многих отношениях. — TOOGAM 8 ноя. 2015, 12:32
  • 9
    Я бы использовал lzma2 — Lance Badger 07 июля 2016, 15:22
  • Если вы посмотрите часто задаваемые вопросы о 7-zip, в нем говорится, что более новые версии 7z могут иметь худшую производительность, чем старые версии в некоторых случаях.. Прочтите FAQ для получения более подробной информации, но вкратце используйте «qs» в поле «Параметры» в графическом интерфейсе или используйте -mqs в версии для командной строки, чтобы использовать старый метод сортировки по расширению файла. 7-zip.org/faq.html. — drojf 15 мая ’19 в 14:21
добавить комментарий |

Чтобы создать самый маленький стандартный 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 уровень сжатия = 9 (Ultra) -mfb = 64 количество быстрых байтов для LZMA = 64-  md = 32 м размер словаря = 32 мегабайта-мс = на сплошном архиве = на  

24

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

  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, чтобы правильно его проанализировать. Или, может быть, он должен работать и просто не работает в тестируемых сборках.

Поделиться
Улучшить этот ответ
отредактировано 17 июня ’19 в 18:35
zx485
2,10166 золотых знаков1414 серебряных знаков2020 бронзовых знаков
ответил 17 июня ’19 в 16:25
  • 3
    Вау, это действительно имело большое значение. Для своего архива я экспериментировал с множеством других предложений, включая другие ответы здесь, и лучший результат, который я получил, составил 99 МБ против 85 МБ с этими настройками. — user9399 25 авг., 23:42
  • Как бы вы это назвали в Windows 10 в командной строке? Я получаю сообщение «Параметр неверен» в версии 19.00 21.02.2019 — user1306322 4 декабря 2019 г., 9:11
  • Чтобы запустить его в Windows, вы должны добавить путь установки 7-Zip к переменной системной среды. Затем вы можете использовать 7z внутри командной строки. — user1100970 08 июня ’20 в 16:17
  • Эта ссылка дает дополнительную информацию о добавлении системных переменных среды для 7zip. — Jonas 11 июня ’20 в 15:26
  • 2
    ваша команда использует невероятный объем виртуальной памяти 45 ГБ. на моем ПК это заставило OOM-Killer просто убить его. Таким образом, это не похоже на решение для людей с 16 ГБ ОЗУ или меньше. — JPT 17 июля ’20 в 15:46
| показать 2 дополнительных комментария

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

  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, чтобы правильно его проанализировать. Или, может быть, он должен работать и просто не работает в тестируемых сборках.


17

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

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

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

Поделиться
Улучшите это ответ
Создан 15 июл. в 13: 33
  • Для текст, такой как файлы журнала, ppmd, безусловно, лучший вариант. Однако в вопросе упоминалось, что он должен оставаться в формате zip, который может не работать с PPMD. — Брайан Минтон, 19 дек. ’13 в 16:31
  • Только что попробовал заархивировать с помощью PPMD, и проводник Windows без жалоб открывает его содержимое здесь, в Windows 7 — Умбер Феррул, 20 декабря 2013 г., 16:44
  • 4
    Я тоже это заметил. Он отлично открывает содержимое. Однако когда я действительно попытался просмотреть один из файлов внутри zip-файла, это не удалось. — Брайан Минтон, 23 дек. ’13 в 16:58
  • 4
    Почему PPMD ​​является лучшим методом сжатия текстовых файлов? — user598527 27 фев. ’17 в 19:58
  • 3
    LZMA2 дает лучшие результаты для текстовых файлов, чем PPMD. — T3rm1 22 ноя. ’18 в 10:38
| показать 1 дополнительный комментарий

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

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

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


7

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

  1.  7z a -mx = 9 1,7z db.fdb2.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 64 -md = 32m -ms = на 2.7z db.fdb3.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 258 -md = 32m -ms = на 3.7z db.fdb4.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 258 -md = 32m -ms = on -pass = 15 4.7z db.fdb5.  7z a -mx = 9 -mmt = на 5.7z db.fdb6.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 258 -md = 32m -ms = on -mmt = on 6.7z db.fdb  

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

  1,7z 96 МБ (100108731 B) с размером 6 футов 25 дюймов 2,7z 95 МБ (99520375 B) с размером 5 футов 18 дюймов 3,7z 93 МБ (97512311 B) с  9 '19 "4,7z 93 МБ (97512345 B) с 9' 40" 5,7z 96 МБ (100108731 B) с 5 '26 "6,7z 93 МБ (97512311 B) с 9' 09"  

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

Поделиться
Улучшите этот ответ
отредактировано 15 августа 2016 в 15:48
ответил 15 августа 2016, 13:27
добавить комментарий |

Я сравниваю db.fdb 1,2 ГБ (1236598784 B) на сервере Ubuntu 14.04.03 с p7zip [64] 9.20 на виртуальной машине :

  1.  7z a -mx = 9 1,7z db.fdb2.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 64 -md = 32m -ms = на 2.7z db.fdb3.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 258 -md = 32m -ms = на 3.7z db.fdb4.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 258 -md = 32m -ms = on -pass = 15 4.7z db.fdb5.  7z a -mx = 9 -mmt = на 5.7z db.fdb6.  7z a -t7z -m0 = lzma -mx = 9 -mfb = 258 -md = 32m -ms = on -mmt = on 6.7z db.fdb  

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

  1,7z 96 МБ (100108731 B) с размером 6 футов 25 дюймов 2,7z 95 МБ (99520375 B) с размером 5 футов 18 дюймов 3,7z 93 МБ (97512311 B) с  9 '19 "4,7z 93 МБ (97512345 B) с 9' 40" 5,7z 96 МБ (100108731 B) с 5 '26 "6,7z 93 МБ (97512311 B) с 9' 09"  

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


6
+50

Я решил провести несколько экспериментов, чтобы эмпирически найти оптимальные параметры сжатия.

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

Параметры, которые он пробует:

  LC: количество битов литерального контекста LP: количество битов Literal Pos PB: количество битов Pos YX: уровень  анализ файлаFB: количество быстрых байтов  

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

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

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

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

Наиболее распространенная комбинация выглядит так:

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

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

  • -m (Установить метод сжатия ) переключатель
  • диалоговое окно «Добавить в архив»
Поделиться
Улучшить этот ответ
отредактировано 7 декабря ’19 в 07:34
ответил 5 дек. ’19 в 9:37
добавить комментарий |

Я решил провести несколько экспериментов, чтобы эмпирически найти оптимальные параметры сжатия.

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

Параметры, которые он пробует:

  LC: количество битов Literal Context LP: количество битов Literal Pos PB: количество Pos Bits YX: уровень анализа файла FB: количество Fast  Байт  

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

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

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

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

Наиболее распространенная комбинация выглядит так:

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

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

  • -m (Установить метод сжатия)
  • Диалоговое окно «Добавить в архив»

0

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

Поделиться
Улучшите этот ответ
ответ дан 10 мая ’11 в 17: 37
  • 1
    Меня беспокоит, как люди на другой стороне распакуют файлы. Мне нужно, чтобы для них это было как можно проще. Знаете ли вы, можно ли распаковать разделенные тома с помощью встроенного в Windows zip или gzip? — jjnguy, 10 мая 2011, 14:40
  • По-видимому, нет, встроенная в Windows функция zip-папок не работает с составными zip-файлами. Это очень плохо, поскольку это стандартная функция формата еще до Windows 3. Я был бы очень удивлен, если бы gzip не смог этого сделать. WinZip определенно может. — Роб Кеннеди 10 мая 2011, в 14:47
добавить комментарий |

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

Оцените статью
Botgadget.ru
Добавить комментарий