Инструмент командной строки 7z позволяет указать несколько методов сжатия , например:
# 7-zip archive type, strongest (9) compression, methods PPMd, BCJ2, LZMA2
$ 7z a -t7z -mx=9 -m0=PPMd -m1=BCJ2 -m2=LZMA2 myarchive.7z somefile.xml
Все методы используются каким-либо образом или, по крайней мере, указаны в метаданных:
$ 7z l -slt myarchive.7z
7-Zip [64] 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18
Listing archive: myarchive.
7z
--
Path = myarchive.7z
Type = 7z
Method = LZMA2 PPMD BCJ2
[..]
----------
Path = somefile.xml
[..]
Method = PPMD:o32:mem192m BCJ2 LZMA2:48m
Block = 0
Похоже, он не запускает файл всеми тремя способами, выбирая лучший. Скорее, он, по-видимому, всегда выбирает первый, так как изменение порядка метода существенно влияет на размер файла.
Даже если я добавлю несколько файлов, например, один XML-файл (PPMd обеспечивает лучшее сжатие) и один двоичный файл (LZMA2 делает), он все равно перечислит все методы для обоих файлов и не будет динамически переключаться для каждого файла.
Фактически, в документации конкретно сказано, что «Вы можете использовать любое количество методов», но это не говорит о том, почему .
То, чего я пытаюсь добиться, - это отдельный архив «попробуй несколько методов, выбери какой лучше». Конечно, я могу вручную добиться этого с помощью небольшого количества сценариев, но, по-видимому, цепные методы сжатия должны делать именно это?
источник
Ответы:
Как правило, сжатые данные не могут быть сжаты (далее) эффективно. После применения первого метода сжатия размер файла не может быть значительно уменьшен.
В
-mN=X
основном для указания фильтров (взятых из файла справки Windows):Также из файла справки приведен расширенный пример использования нескольких выходных потоков фильтра BCJ2:
источник
Кажется, вы можете применить фильтры в последовательности.
Этот пост прошлого года имеет хорошее объяснение:
Что означает число после ключа -m 7-zip?
источник