2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69

Quelles sont les meilleures options à utiliser lors de la compression de fichiers à l'aide de 7 Zip ?

Je dois souvent rassembler des fichiers de log et les télécharger sur un serveur central (appartenant à une autre entreprise). Le serveur central a une limite de taille du fichier, j'essaie donc de créer le plus petit fichier possible qui soit encore au format zip.

Quels sont les meilleurs paramètres à utiliser pour compresser un fichier texte au format zip lorsque mon seul besoin est une petite taille de fichier ?

J'ai fait l'ultra compression évidente et choisie, et j'ai remarqué que LZMA fait un meilleur travail que le dégonflement, mais il y a beaucoup trop d'autres permutations d'options pour que je puisse toutes les tester.

Réponses (6)

65
65
65
2014-04-15 15:15:36 +0000

Pour créer le plus petit fichier ZIP standard que 7-Zip puisse créer, essayez :

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

Source : Comment puis-je obtenir la meilleure compression ZIP standard ?

Sinon, si vous ne vous souciez pas de la norme ZIP, utilisez les ultra paramètres suivants :

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Qui sont :

-t7z 7z archive

-m0=lzma
       lzma method

-mx=9 level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on
14
14
14
2013-07-15 10:33:24 +0000

Si vous pouvez utiliser le format .7z plutôt que simplement .zip, j'utiliserais simplement PPMD avec les options suivantes et laisserais tout le reste comme défini par le niveau de compression :

  • Format d'archive : 7z
  • Méthode de compression : PPMD
  • Niveau de compression : Ultra

Je compresse régulièrement les logs du serveur/texte (60MB+) en utilisant ces options et ils sortent généralement à 1-2% de la taille originale.

8
8
8
2019-06-17 16:25:32 +0000

Après de nombreuses expérimentations, une recherche dans la documentation détaillée de 7zip, et la lecture de certains des codes sources de 7z concernant les paramètres avancés de LZMA2, voici une meilleure méthode ci-dessous. Elle a permis de réduire les fichiers de test du monde réel d'environ 1 Go plus de 2 à 4 fois mieux que les solutions précédemment acceptées publiées ici ou même dans la page de manuel 7z.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

La compression LZMA2 est supposée ici, mais vous pourriez obtenir des performances encore meilleures dans 7zip en passant des options LZMA2 avancées comme -m0=LZMA2:27, ou -m0=LZMA2:d25, ou un tableau de paramètres comme

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Ces paramètres ne semblent pas être respectés par les versions 7z que j'ai testées, mais vous pourriez vouloir explorer plus avant ou corriger le code 7z pour les analyser correctement. Ou peut-être qu'il est censé fonctionner et qu'il est juste cassé dans les versions testées.

7
7
7
2016-08-15 13:27:49 +0000

Je compare pour db.fdb 1,2 Go (1236598784 B) dans le serveur Ubuntu 14.04.03 avec p7zip [64] 9.20 sur VM :

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

et j'ai ce résultat :

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

Je pense que la deuxième méthode fonctionne bien = (presque) meilleure compression avec le meilleur temps. Mais pour une meilleure “vue” et une mémorisation facile, la première méthode est celle des petits fichiers sans point de compression maximale. Entre la méthode 2 et 3, nous n'obtenons pas de 7z plus petits mais nous payons presque deux fois plus de temps pour la compression. Chacun décide de la méthode qu'il souhaite utiliser.

3
3
3
2019-12-05 09:37:09 +0000

J'ai décidé de faire quelques expériences pour trouver empiriquement les paramètres de compression optimaux.

L'outil que j'ai utilisé wa 7-ZIP finetuner . Cet outil recherche les paramètres optimaux en répétant simplement la compression avec des paramètres variables à la recherche de la combinaison optimale. L'exécution d'un fichier peut parfois prendre plus d'une heure, même sur un ordinateur rapide.

Les paramètres qu'il essaie sont :

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

J'ai laissé les paramètres par défaut de la taille du dictionnaire à 512 Mo et de la taille du bloc solide sur On. L'outil utilise la méthode LZMA.

Les meilleures combinaisons de paramètres sur plusieurs types de fichiers sont les suivantes :

Je note que les meilleures valeurs n'étaient pas constantes même pour des fichiers du même type.

Conclusion : Il n'y a pas de meilleures options, car chaque fichier peut avoir sa propre combinaison optimale. On peut pousser tous les paramètres jusqu'à leurs limites, mais une amélioration n'est pas du tout garantie.

La combinaison la plus courante semble être :

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

Quelques références 7-Zip :

0
0
0
2011-05-10 14:37:36 +0000

Définissez le champ “split to volume, bytes” à la taille maximale autorisée du fichier du serveur (en octets, je pense, bien qu'il semble accepter des abréviations courantes comme “KB” et “MB”). Si le fichier zip dépasse cette taille, 7-zip le divisera automatiquement en plusieurs fichiers, tels que integration_serviceLog.zip.001, integration_serviceLog.zip.002, etc. (A l'époque, PK Zip utilisait cette méthode pour répartir les fichiers zip sur plusieurs disquettes). Vous aurez besoin de tous les fichiers présents pour les décompresser. Utilisez cela au lieu de vous soucier des meilleurs paramètres de compression à utiliser pour un ensemble de fichiers particulier, car ce qui est le mieux pour un fichier peut être différent pour un autre fichier, et vous ne voulez pas avoir à passer par là chaque fois que vous devez copier des journaux.