Narzędzie wiersza polecenia 7z umożliwia określenie wielu metod kompresji , np .:
# 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
Wszystkie metody są używane w jakiś sposób lub przynajmniej określone w metadanych:
$ 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
To nie nie wydaje się, aby uruchomić plik za pomocą wszystkich trzech metod, wybierając najlepsze. Najwyraźniej zawsze wybiera pierwszą, ponieważ zmiana kolejności metody ma znaczący wpływ na rozmiar pliku.
Nawet jeśli dodam wiele plików, takich jak jeden plik XML (PPMd zapewnia najlepszą kompresję) i jeden plik binarny (robi to LZMA2), nadal wyświetla listę wszystkich metod dla obu plików i nie wydaje się przełączać dynamicznie dla poszczególnych plików.
W rzeczywistości, dokumentacja wyraźnie mówi, że „można użyć dowolnej liczby metod.”, Ale to nie znaczy Przeto .
To, co próbuję osiągnąć, to archiwum „wypróbuj wiele metod, wybierz najlepszą z nich” dla każdego pliku. Mogę oczywiście ręcznie to osiągnąć za pomocą małego skryptu, ale prawdopodobnie metody kompresji łańcuchowej powinny to zrobić?
źródło
Odpowiedzi:
Zasadniczo skompresowanych danych nie można (dalej) skutecznie kompresować. Po zastosowaniu pierwszej metody kompresji rozmiar pliku nie może zostać znacznie zmniejszony.
Służy
-mN=X
głównie do określania filtrów (pobranych z pliku pomocy systemu Windows):Również z pliku pomocy zaawansowany przykład wykorzystujący wiele strumieni wyjściowych filtra BCJ2:
źródło
Wygląda na to, że możesz zastosować filtry w sekwencji.
Ten post z ubiegłego roku ma ładne wyjaśnienie:
Co oznacza liczba po przełączniku -m 7-zip?
źródło