Quelles sont les meilleures options à utiliser lors de la compression de fichiers avec 7 Zip?

62

Je dois souvent rassembler des fichiers journaux et les télécharger sur un serveur central (appartenant à une autre société). Le serveur central a une taille limite de fichier. J'essaie donc de créer le plus petit fichier possible au format zip.

Quels sont les meilleurs paramètres à utiliser lors de la compression d'un fichier texte au format zip lorsque mon seul besoin est une petite taille de fichier?

Options 7zip

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

jjnguy
la source
1
Le fractionnement du zip en plusieurs fichiers est-il une option?
JaredMcAteer
3
Dès que vous choisissez autre chose que le Deflateformat, ce n'est plus un fichier .zip "normal", mais un fichier zip "étendu", créé par WinZip. À l'origine, ils conservaient l'extension au format .zip, une source de consternation (étant donné que la plupart des outils de gestion de zip classiques ne peuvent pas s'en occuper), mais la plupart des archiveurs utilisent maintenant .zipx pour les distinguer des fichiers .zip traditionnels. Si vous pouvez utiliser LZMA, passez à .7z et choisissez PPMd - il devrait compresser mieux (et plus rapidement!) Pour les fichiers texte.
afrazier
1
@afrazier: "La spécification de format de fichier .ZIP documente les méthodes de compression suivantes: stocké (pas de compression), rétréci, réduit (méthodes 1 à 4), implodé, libellé en jetons, déflaté, Deflate64, bzip2, LZMA (EFS), WavPack, PPMd. . " fr.wikipedia.org/wiki/Zip_%28file_format%29#Compression_methods
endolith
1
@endolith: bzip2, lzma, wv et ppmd sont tous des ajouts très récents au format de fichier. Il n'est même pas prudent de supposer que votre destinataire peut gérer deflate64, et encore moins tout ce qui est plus récent.
Afrazier
1
définir "outils zip normaux". La plupart des "outils de compression normaux", tels que 7z et Winrar, permettent d'extraire des fichiers 7z.
phuclv

Réponses:

61

Pour créer le plus petit fichier ZIP standard que 7-Zip peut 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 paramètres ultra 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
Kenorb
la source
2
@Tek: Pourquoi? Ce n'est pas un bon. La question portait sur l'utilisation du "format ZIP standard", de sorte que la réponse ne devrait pas spécifier LZMA. -ms = on est pour .7z, pas les fichiers zip standard. -md est lié à BZip2, donc je ne m'attends pas à ce que cela affecte ZIP (ou même LZMA). -mfb = 64 est une valeur non optimisée: -mfb = 258 crée des fichiers zip plus petits. Et cette réponse ne mentionne même pas -mpass = 15, ce qui peut affecter les fichiers zip. C'est une réponse bien formatée qui, malheureusement, est fausse de plusieurs façons.
TOOGAM
6
Je voudrais utiliser lzma2
Lance Badger
Si vous consultez la FAQ sur 7-zip, vous remarquerez que les nouvelles versions de 7z peuvent avoir des performances inférieures à celles des versions antérieures dans certaines circonstances. Lisez la FAQ pour plus de détails, mais utilisez en bref le champ 'qs' dans les paramètres de l'interface graphique ou utilisez -mqs dans la version en ligne de commande pour utiliser l'ancienne méthode d'extension par fichier. 7-zip.org/faq.html .
drojf
13

Si vous pouvez utiliser le format .7z plutôt que simplement le format .zip, je voudrais simplement utiliser PPMD avec les options suivantes et laisser le reste tel que 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 journaux de serveur / texte (60 Mo +) en utilisant ces options et ils sortent généralement à 1 ou 2% de la taille d'origine.

Virole Ombre
la source
Pour les textes tels que les fichiers journaux, ppmd est définitivement la voie à suivre. Cependant, la question mentionnait qu'il fallait rester au format zip, ce qui pourrait ne pas fonctionner avec PPMD.
Brian Minton
Je viens d'essayer zip avec PPMD ​​et Windows Explorer ouvre le contenu sans problème ici sur Windows 7
Umber Ferrule
3
J'ai remarqué ça aussi. Il ouvre le contenu très bien. Cependant, lorsque j'ai réellement essayé de visualiser l'un des fichiers contenus dans le fichier zip, cela a échoué.
Brian Minton
2
Pourquoi la méthode de compression PPMD ​​est-elle supérieure pour les fichiers texte?
user598527
1
LZMA2 donne de meilleurs résultats pour les fichiers texte que PPMD.
T3rm1
7

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 avoir que des résultats:

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) mieux compresser avec le meilleur temps. Mais pour une meilleure "vue" et facile à retenir est la première méthode - avec de petits fichiers et aucun point de compression maximale. Entre la méthode 2 et la méthode 3, nous n'obtenons pas un format 7z plus petit, mais nous passons près de deux fois plus de temps pour la compression. Quelqu'un décide avec le sien.

SULIMa
la source
7

Après de nombreuses expériences, une exploration de la documentation détaillée de 7zip et une lecture du code source de 7z concernant les paramètres avancés de LZMA2, voici une meilleure méthode ci-dessous. Il a permis de réduire de 2 à 4 fois les fichiers de test réels de 1 Go dans le monde réel par rapport aux 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 pourrez peut-être obtenir de meilleures performances dans 7zip en passant des options LZMA2 avancées telles que -m0=LZMA2:27, ou -m0=LZMA2:d25, ou un tableau de paramètres tels que

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

De tels paramètres ne semblaient pas être respectés par les versions 7z que j'ai testées, mais vous voudrez peut-être explorer davantage ou patcher le code 7z pour les analyser correctement. Ou peut-être est-il censé fonctionner et est simplement cassé dans les versions qui ont été testées.

91735472
la source
wow, cela fait une très grande différence. Pour mes archives, j'ai expérimenté beaucoup d'autres suggestions, y compris d'autres réponses ici. Le meilleur résultat que j'ai obtenu est 99 Mo, contre 85 Mo avec ces paramètres.
user9399
0

Définissez le champ "découper en volume, octets" sur la taille de fichier maximale autorisée du serveur (en octets, je pense, même s'il semble accepter les abréviations courantes telles que "KB" et "MB"). Si le fichier zip dépasse cette taille, 7-zip le scinde automatiquement en plusieurs fichiers, tels que integration_serviceLog.zip.001 , integration_serviceLog.zip.002 , etc. (Autrefois, PK Zip l'avait utilisé pour disquettes.) Vous aurez besoin de tous les fichiers pour les décompresser. Utilisez cela au lieu de vous soucier des meilleurs paramètres de compression absolus à 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 à le subir à chaque fois que vous en avez besoin. copier les journaux.

Rob Kennedy
la source
1
Je suis inquiet de savoir comment les gens de l'autre côté vont décompresser les fichiers. J'ai besoin que ce soit aussi simple que possible pour eux. Savez-vous si vous pouvez décompresser les volumes fractionnés à l'aide du zip ou de gzip intégré à Windows?
jjnguy
Apparemment, non, la fonctionnalité de dossier zip Windows intégrée ne permet pas de créer des fichiers zip étendus. C'est dommage, car il s'agit d'une fonctionnalité standard du format depuis avant Windows 3. Je serais très surpris que gzip ne puisse pas le faire. WinZip peut certainement.
Rob Kennedy