engrus

7-Zip плагины\Smart7z

Smart7z - это плагин для популярного архиватора 7-Zip, позволяющий производить упаковку файлов в 7z архив с использованием гибких настроек. Например, можно настроить, что бы jpg файлы упаковывались с использованием метода LZMA, wav файлы с использованием метода WavPack2, текстовые файлы с использованием метода PPMD, а все остальное с использованием метода LZMA2. Подобное разделение может значительно улучшить качество сжатия.

Установка

Установочный дистрибутив Smart7z представляет собой простой zip архив, в котором находятся 3 файла:

  • Smart7z.64.dll - 64 битная версия плагина
  • Smart7z.32.dll - 32 битная версия плагина
  • Smart7z.ini - пример файла настроек
  • ReadMe.txt - краткая инструкция

Для установки плагина в папке, в которую установлена программа 7-Zip, необходимо создать папку Formats. В созданную папку необходимо скопировать либо файл Smart7z.64.dll, либо Smart7z.32.dll, в зависимости от разрядности программы 7-Zip, и файл Smart7z.ini. После этого 7-Zip при запуске будет автоматически находить плагин Smart7z.

Использование

Важно: Плагин предназначен только для создания НОВЫХ 7z файлов. При необходимости модификации созданного 7z файла его можно легко открыть как в самой программе 7-Zip, так и в любой другой программе, поддерживающей формат 7z.

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

Для упаковки с использованием плагина Smart7z нужно выбрать в 7-Zip стандартную команду упаковки. После появления окна Add To Archive нужно выбрать в поле Archive format формат Smart7z:

Smart7z

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

Анализ файла происходит в соответствии с файлом настроек. Файл настроек можно задать вводом дополнительного параметра в строку Parameters:

ini=filename

где filename - это имя файла настроек без полного пути. Имя не должно содержать пробелы, а сам файл должен располагаться в папке плагина. Если параметр ini не указан, то будет использован файл настроек Smart7z.N.ini из папки плагина, где N - это числовое представление выбранного уровня сжатия, т.е. для уровня Ultra будет использован файл настроек Smart7z.9.ini, для Maximum будет использован файл настроек Smart7z.7.ini и т.д. Если такой файл не найден, то будет использован файл настроек Smart7z.ini из папки плагина.

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

:default: m=%LZMA2%
*.pdf *.rtf
*.dat "some name*.dat"

Первая строка секции идентифицирует начало секцию и состоит из имени секции, обрамленного символами ":", и настроек сжатия, с которыми будут сжиматься файлы, отнесенные к этой секции. В данном случае именем является "default", а настройками сжатия является строка "m=%LZMA2%" (%LZMA2% - это переменная, описание переменных смотрите ниже). Если в настройках не указан параметр s (размер непрерывного блока), то его значение будет устанавлено в 2Gb.

Остаток секции заполнен масками файлов. Допускается произвольное количество масок в строке, разделителем масок в строке является пробел. При необходимости использования пробела в маске такая маска должны быть обрамлена в двойные кавычки.

Секции, имеющие одинаковые настройки сжатия в конечном итоге будут объединены в одну, поэтому можно не бояться создавать несколько секций с одинаковыми настройками.

Секция вместе с масками может быть временно отключена, если в начале первой строки добавить символ "-", т.е. первая строка приобретет следующий вид:

-:default: m=%LZMA2%

Последней секцией файла настроек является секция c именем sorting. В этой секции перечислены не маски файлов, а просто расширения файлов. Эта секция имеет особое значение - она определяет, как будет сортироваться список файлов в соответствии с расширением. Чем раньше указано расширение, тем выше в списке окажется файл с таким расширением. Размещение однотипных файлов рядом (например, файлов MS Office doc и xls) дает лучшее сжатие.

Группировка упаковываемых файлов по секциям

При анализе файлов используется следующая последовательность проверок:

  1. Проверяется соответствие имени упаковываемого файла с масками, перечисленными в каждой из секций (путь к файлу не учитывается). При первом найденном соответствии файл автоматически соотносится с секцией, содержащей совпадающую маску.
  2. Если соответствия с маской обнаружить не удалось, то производится анализ содержимого файла. На этой стадии файл может быть отнесен к предопределенным секциям, имеющим значение по умолчанию (о таких секциях смотрите ниже). Например, exe файл может быть отнесен к секции "BCJ2", а wav файл отнесен к секции "WavPack2". В текущей версии плагина могут быть проанализированы и автоматически распределены по группам следующие типы файлов:
    • PE файлы (.exe, .dll, .com, .sfx, etc.)
    • ELF файлы
    • Mach-O файлы
    • Файлы, которые могут быть упакованы плагином WavPack
    • WAV файлы
    • Текстовые файлы
  3. Если анализ содержимого файла не привел к результату, то файл будет отнесен к секции с именем "Default".

После проведения анализа всех файлов начинается упаковка файлов в соответствии с настройками соответствующих секций.

Поскольку операция анализа содержимого файла является достаточно ресурсоемкой по сравнению с операцией проверки соответствия имени файла и маскам, то для уменьшения общего времени анализа рекомендуется заполнять секции бо́льшим количеством масок с известными расширениями. В тоже время крайне не рекомендуется добавлять маски, содержащие расширения файлов, тип которых определяется автоматически на основе содержимого (exe, dll, wav и прочие).

Переменные

Для удобства настроек предопределен ряд переменных. Также могут быть добавлены и новые переменные. Переменные используются при описании настроек сжатия.

Предопределенны следующие переменные:

ИмяЗначение по умолчанию
В 64 битной версии плагинаВ 32 битной версии плагина
%LZMA%LZMA:x9:mt2:d1536mLZMA:x9:mt2:d128m
%LZMA2%LZMA2:x9:mt2:d1536mLZMA2:x9:mt2:d128m
%PPMD%PPMd:x9:mem1g

Пример:

В 64 битной версии плагина строка

:default: m=%LZMA2%

будет интерпретироваться как

:default: m=LZMA2:x9:mt2:d1536m

Для установки нового нужного вам значения или для добавления новой переменной нужно добавить в начало ini файла строку следующего вида:

::SET %LZMA% NewValue

где %LZMA% - это одна из переменных, а NewValue - это новое значение переменной. NewValue не может содержать другую переменную.

Предопределенные секции

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

Имя секцииПрименяется кНастройки по умолчанию
DefaultСжатие по умолчанию%LZMA2%
TxtТекстовые файлы%PPMD%
BCJ2Файлы с исполняемым кодом для Intel совместимых процессоровm0=BCJ2 m1=%LZMA2% m2=LZMA:d20:fb128:lc0:lp2 m3=LZMA:d20:fb128:lc0:lp2 mb0s0:1 mb0s1:2 mb0s2:3
ARMФайлы с исполняемым кодом для процессоров ARMf=ARMT m=%LZMA2%:lc2:lp1
ARMTФайлы с исполняемым кодом для процессоров ARM Thumb-2f=ARMT m=%LZMA2%:lc2:lp1
IA64Файлы с исполняемым кодом для процессоров Intel 64f=IA64 m=%LZMA2%:pb4:lc0:lp4
SPARCФайлы с исполняемым кодом для процессоров SPARCf=SPARC m=%LZMA2%:lc1:lp2
PPCФайлы с исполняемым кодом для процессоров PowerPCf=PPC m=%LZMA2%:lc1:lp2
WavPack2Файлы с несжатым аудио в формате PCMm0=WavPack2:x9 m1=lzma:d20 mb0s1:1
Delta2f=delta:2 m=%LZMA2%:lc2:lp1
Delta4f=delta:4 m=%LZMA2%:lc1:lp2
Delta8f=delta:8 m=%LZMA2%:pb3:lc0:lp3
Delta16f=delta:16 m=%LZMA2%:pb4:lc0:lp4
DeltaN, N - число от 1 до 256 кроме 2, 4, 8 и 16f=delta:N m=%LZMA2%

Использование дополнительных кодеков

При обнаружении установленного в программу 7-Zip плагина WavPack он автоматически будет применяться для упаковки файлов с несжатым аудио в формате PCM. Для отключения использования данного кодека необходимо добавить в начало ini файла следующую строку:

::DISABLE WavPack2

Актуальная версия

  • Версия плагина: 1.2.1
  • Размер установочного дистрибутива: 2097 KB
  • Дата установочного дистрибутива: 12 Apr 2020