7Zip максимальное сжатие параметры

Оригинал: Understanding 7z command switches — part I
Автор: Himanshu Arora
Дата публикации: 6 марта 2017 г.
Перевод: А.Панин
Дата перевода: 6 апреля 2017 г.

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

В этой же статье мы постараемся рассмотреть дополнительные функции данного инструмента, доступные в результате использования классических параметров командной строки. Но перед тем, как перейти непосредственно к рассмотрению этих функций, следует упомянуть о том, что все инструкции и команды, упомянутые в статье, были протестированы в системе Ubuntu 16.04 LTS.

Примечание: в ходе выполнения различных операций с помощью архиватора 7zip будут использоваться файлы с именами, приведенными на расположенной ниже иллюстрации.

Включение в архив отдельных файлов

Архиватор 7zip позволяет включать в архивы отдельные файлы. Для использования этой возможности предназначен параметр -i .

Например, если вам нужно включить в архив лишь файлы с расширением .txt , вы можете воспользоваться следующей командой:

Теперь вы можете воспользоваться следующей командой для того, чтобы убедиться в наличии в созданном архиве лишь файлов с расширением .txt :

Из вывода очевидно, что в архив был добавлен лишь файл с именем testfile.txt .

Исключение отдельных файлов из рассмотрения архиватором

Если вам понадобится, вы можете исключить из рассмотрения архиватором файлы, которые вас не интересуют. Для этой цели предназначен параметр -x :

Например, если вам нужно исключить из рассмотрения архиватором файл с именем abc.7z в процессе создания нового архива, вы можете воспользоваться следующей командой:

А это вывод данной команды:

Для того, чтобы убедиться в отсутствии в созданном архиве файла с именем abc.7z вы можете воспользоваться следующей командой:

Из вывода очевидно, что файл с именем abc.7z был исключен из нового архива.

Совет: предположим, что вам нужно исключить из рассмотрения архиватором все файлы с расширением .7z с именами, начинающимися с буквы t и, в то же время, добавить в архив все файлы с расширением .7z с именами, начинающимися с буквы a . Эта задача может быть решена путем совместного использования параметров -i и -x аналогичным образом:

Защита архива с помощью пароля

7zip также позволяет защитить ваш архив с помощью пароля. Для этого может использоваться параметр -p .

Примечание: параметр -mhe активирует ( on ) или деактивирует ( off ) механизм шифрования заголовка архива (который отключен по умолчанию).

Читайте также:  Телефон лучше айфона и дешевле

Думаю, очевидно, что при извлечении файлов из защищенного с помощью пароля архива архиватор попросит вас ввести пароль. Для извлечения файлов из защищенного подобным образом архива следует использовать "параметр-букву" e . А это пример команды для извлечения файлов из такого архива:

Установка целевой директории

Архиватор позволяет вам извлекать файлы из архива в любую удобную директорию. Для этой цели используется параметр -o . Думаю, не стоит напоминать о том, что он будет работать лишь в случае использования "буквы-параметра" e или x .

Предположим, к примеру, что вы выполнили следующую команду в текущей директории:

При этом значение параметра -o говорит о том, что файлы из архива будут размещены в директории ./how/to/forge .

На основе содержимого приведенной выше иллюстрации несложно сделать вывод о том, что из архива были извлечены все файлы. Но куда они были извлечены? Для того, чтобы убедиться в наличии извлеченных файлов в директории ./how/to/forge может использоваться команда ls -R .

Содержимое приведенной выше иллюстрации говорит о том, что все файлы из архива output.7z были действительно извлечены в директорию ./how/to/forge .

Создание многотомных архивов

С помощью архиватора 7zip могут создаваться, в том числе, многотомные архивы (состоящие из небольших по размеру файлов-подархивов). Это очень полезная возможность, позволяющая передавать файлы большого объема по сети или размещать их на нескольких флеш-накопителях с интерфейсом USB. Для использования этой возможности предусмотрен параметр -v . При работе с упомянутым параметром необходимо указывать размер подархивов.

Вы можете указывать размер подархивов в байтах ( b ), килобайтах ( k ), мегабайтах ( m ) и гигабайтах ( g ).

Давайте попробуем разобраться с данной командой с помощью примера. Учтите, что мы будем использовать новую директорию для выполнения операций с задействованием параметра -v .

Это содержимое данной директории:

Теперь мы можем выполнить следующую команду для создания многотомного архива (с подархивами размером в 100 байт каждый):

Для ознакомления со списком созданных подархивов может использоваться команда ls :

Как очевидно из приведенной выше иллюстрации, было создано четыре тома — volume.7z.001 , volume.7z.002 , volume.7z.003 , volume.7z.004 .

Примечание: вы можете извлечь файлы, открыв файл архива с расширением .7z.001 . Но, для корректной распаковки архива все остальные подархивы также должны присутствовать в текущей директории.

Установка степени сжатия

7zip позволяет пользователям задавать степень сжатия их архивов. Данная функция доступна посредством параметра -m . 7zip поддерживает ограниченный номенклатуру степеней сжатия, а именно, степени -mx0 , -mx1 , -mx3 , -mx5 , -mx7 и -mx9 .

Это краткое описание упомянутых степеней сжатия:

  • -mx0 — Вообще без сжатия — содержимое файлов просто копируется в архив.
  • -mx1 — Минимальные временные затраты с минимальным коэффициентом сжатия данных.
  • -mx3 — Лучший коэффициент сжатия данных, чем при использовании -mx1 .
  • -mx5 — Используется по умолчанию (средний коэффициент сжатия данных).
  • -mx7 — Максимальный коэффициент сжатия данных.
  • -mx9 — Ультравысокий коэффициент сжатия данных.

Примечание: для ознакомления с более подробными описаниями упомянутых степеней сжатия рекомендую обратиться к данной странице .

Читайте также:  Что значит очистить данные приложения

Например, в определенной директории имеется набор файлов и директорий, которые мы пытаемся сжимать с различными степенями сжатия. Чтобы вам было понятнее, это команда для создания архива со степенью сжатия 0 :

По аналогии были исполнены команды для остальных степеней сжатия.

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

Вывод технической информации об архиве

При необходимости 7zip может выводить с помощью стандартного потока вывода техническую информацию об архиве — его тип, физический размер, размер заголовка и так далее. Для доступа к данной возможности предназначен параметр -slt . Данный параметр работает лишь в случае использования "параметра-буквы" l .

Указание типа создаваемого архива

Если вам нужно создать архив определенного типа вместо архива 7zip (создаваемого по умолчанию), вы можете указать желаемый тип архива с помощью параметра t :

В следующем примере показана процедура создания обычного zip-архива:

В результате будет создан файл howtoforge.zip . Для того, чтобы убедиться в корректности типа созданного архива можно воспользоваться командой file :

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

Заключение

Вы наверняка согласитесь с тем, что знание "букв-параметров" 7zip наряду с обычными параметрами позволит использовать данный инструмент максимально продуктивно. Но мы еще не до конца разобрались с параметрами — некоторые из них будут обсуждаться во второй статье серии.

Место стало на жестком диске заканчиваться. Менять размеры разделов — слишком долго, да и компьютер недоступен. Поэтому пришла в голову сумасшедшая мысль: а что если изучить архиваторы и выбрать лучший, изучить параметры сжатия и выбрать лучшие, пережать старые архивы и сравнить размеры.

Из архиваторов давно были выбраны WinRAR и 7-Zip; на текущий момент мой выбор при анализе архиваторов не изменился. На первом месте 7-Zip, т.к. порой он уделывает WinRAR от 2 до 5 раз по размеру конечного архива (основной коэффициент — 1,2-1,8). По нему и выложу рисунок с настройками, вкратце опишу их. Параметры выбраны из расчета на максимальную компрессию.


— archive format: 7z. Он не конфликтует с WinRAR. Использование этих двух архиваторов, кстати, выгодно: 7-Zip иногда проигрывает по сжатию (1 раз из 100);
— compression level: конечно же, максимум;
— compression method: LZMA2. LZMA2 — это оптимизированный LZMA, если интересно. Одно исключение: если у вас одни документы на сжатие — попробуйте выбрать PPMd, он для таких случаев и создавался;
dictionary size: чем больше — тем лучше. Можно считать его ключевым параметром после compression level. Так как объем оперативной памяти у меня всего 8 гигабайт — пришлось ограничиться значением 273. Обратите внимание, что объем памяти для декомпрессии невелик. И если вы счастливый обладатель 32 гигабайт оперативной памяти — вы можете достигнуть максимального значения; при этом не беспокоясь, что кто-то ваш архив распаковать не сможет;
— solid block size: на максимум. В интернете пишут, что он дает больший эффект на файлах одинаковых типов или примерно с равным содержимым. Действительности не соответствует, прирост рэндомный или вообще отсутствует;
— number of CPU threads: конечно же, задействуем все ядра процессора.

Читайте также:  Как открыть в c билдер ворд файл

В итоге мне на диске размером в 100 гигабайт удалось освободить 9. Считаю это неплохим показателем; самый весомый результат — по базам данных: коэффициент различия WinRAR/7-Zip составлял 1,5-3.

Ну и в заключение скажу, что архиватор рекомендуется обновлять раз в год.

Здравствуй Хабр!
Данная статья посвящена, как правильно и максимально сжимать файлы в ZIP-архивы. Данную статью я решил написать по той причине, что очень много приложений свои форматы упаковывают именно в ZIP. В данной статье разберем методы сжатия ZIP, приложения для сжатия в ZIP, и как можно улучшить сжатие.

Метод сжатия в ZIP

Для начало предлагаю разобрать с тем, что ZIP поддерживает разные методы сжатия (Copy, Deflate, Deflate64, BZip2, LZMA, PPMd), но мы будем рассматривать только один метод сжатия — Deflate, по той причине, что именно данный метод используют большинство приложений, которые упаковывают свои форматы в ZIP. Вот небольшой список форматов файлов, которые на самом деле являются ZIP-архивами — open-file.ru (введите в поиске ASCII-дескриптор заголовка — PK). Сразу оговорюсь, это только небольшой перечень файлов.

Метод сжатия Deflate

На сегодняшний день есть несколько библиотек, основанных на методе сжатия Deflate:

Библиотека Deflate Скорость работы Степень сжатия Приложения
Zlib Высокая Низкая
7-zip Средняя Средняя 7-zip, advzip
Kzip Низкая Высокая kzip

Так что перед тем как выбирать архиватор для ZIP, необходимо понять какой результат нам нужен, и сколько времени готовы затратить для его получения. для Deflate характерно, чем выше степень сжатия, тем больше времени придется затратить.

Архиваторы ZIP

В данном разделе, мы будем рассматривать только те приложения, которые бесплатные для использования.

Алгоритм 7-zip

Здесь мы поговорим о двух программах, где реализован алгоритм 7-zip: 7-zip и advzip.
При создании zip-архива в помощью 7-zip, я использую следующие параметры

Особенность работы advzip в том, что он уже работает с готовыми архивами zip, т.е. вы просто указываете путь к архиву, и он сам пытается его сжать. Бывает удобно когда у вас уже есть готовый архив, и вам не надо распаковывать и архивировать еще раз.

Алгоритм kzip

Алгоритм kzip был реализован в приложении kzip, приложение работает крайне медленно, но практически всегда дает лучший результат. У него есть настройки (/s, /n, /b), которые могут улучшить/ухудшить степень сжатия ZIP.