A ferramenta de linha de comando 7z permite especificar vários métodos de compactação , por exemplo:
# 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
Todos os métodos são usados de alguma maneira, ou pelo menos especificados nos metadados:
$ 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
Ele não aparecer para executar o arquivo através de todos os três métodos, escolher o melhor. Pelo contrário, aparentemente sempre escolhe o primeiro, pois alterar a ordem do método afeta significativamente o tamanho do arquivo.
Mesmo se eu adicionar vários arquivos, como um arquivo XML (o PPMd produz a melhor compactação) e um arquivo binário (o LZMA2), ele ainda lista todos os métodos dos dois arquivos e não parece alternar dinamicamente por arquivo.
De fato, a documentação diz especificamente que "Você pode usar qualquer número de métodos.", Mas não diz por que .
O que estou tentando obter é um arquivo por arquivo "tente vários métodos, escolha o que for melhor". É claro que posso conseguir isso manualmente com um pouco de script, mas presumivelmente, os métodos de compactação em cadeia devem fazer exatamente isso?
fonte
Respostas:
Geralmente, os dados compactados não podem ser compactados (além) com eficiência. Após a aplicação do primeiro método de compactação, o tamanho do arquivo não pode ser reduzido significativamente.
Isto
-mN=X
é principalmente para especificar filtros (extraídos do arquivo de ajuda do Windows):Também do arquivo de ajuda, um exemplo avançado que utiliza vários fluxos de saída do filtro BCJ2:
fonte
Parece que você pode aplicar filtros em uma sequência.
Este post do ano passado tem uma boa explicação:
O que significa o número após a opção -m do 7-zip?
fonte