web-dev-qa-db-fra.com

Comment puis-je obtenir la meilleure compression Zip standard?

Peu m'importe le temps qu'il faut pour compresser, tout ce que je veux réaliser, c'est deux choses:

  • Le meilleur taux de compression possible
  • Compatibilité avec les lecteurs standard, tels que Windows et WinZip

Des suggestions telles que 7-Zip ne seront donc d'aucune utilité, à moins que 7-Zip soit également légèrement supérieur à la compression Zip standard (au lieu d'utiliser le très bon format .7z).

Idéalement je cherche:

  • Une recommandation d'un logiciel
  • Les paramètres particuliers de ce logiciel qui permettent la meilleure compression absolue
  • Quelque chose qui est gratuit

N'oubliez pas que le temps nécessaire à la compression n'est pas un problème!

Une dernière chose - certains fichiers peuvent être mieux compressés avec des paramètres différents, comme la "taille de Word" ou la "taille du dictionnaire" - existe-t-il un outil permettant d'analyser les fichiers et de choisir le taux de compression le plus approprié, ou bien WinZip, 7-Zip etc. déjà cela?

20
Josh Comley

Si vous souhaitez une compatibilité avec la fonctionnalité Zip Folders intégrée à Windows XP, vous êtes bloqué par la compression Deflate. Je ne pense pas que vous puissiez même utiliser Deflate64, encore moins les méthodes de compression avancées (telles que LZMA, PPMD, WavPack, Bzip2, etc.) disponibles dans les versions récentes de winZip et de PowerArchiver. PowerArchiver utilise au moins l’extension .zipx pour ces fichiers - je ne pense pas que WinZip le fasse pour le moment.

Le fichier Zip le plus petit possible pouvant être créé par 7-Zip peut être créé à l'aide de la ligne de commande suivante:

7za a -mm=Deflate -mfb=258 -mpass=15 -r C:\Path\To\Archive.Zip C:\Path\To\Files\*

Il convient de noter que l’analyseur générique de 7-Zip n’est pas le même que la plupart des autres sur le système. *.* signifie tous les fichiers qui ont des extensions. * signifie tous fichiers.

La création de fichiers .Zip de cette manière (et, vraisemblablement, à l'aide d'autres outils qui tentent de créer des fichiers .Zip "standard" plus petits) est vraiment très lente. Vous économiserez probablement beaucoup de temps et d'espace en utilisant 7-Zip ou WinRar pour créer des archives auto-extractibles.

19
afrazier

Les meilleurs compresseurs de compression (le format de compression utilisé par la norme Zip) que je connaisse sont:

Dégonflez la comparaison de taille de fichier compressé de compression de données avec Zopfli (archivé de original ):

╔══════════════╦═══════════╦═════════╦═════════╦═════════╦═════════╗
║              ║Corpus size║gzip ­-9  ║7-­Zip    ║kzip     ║Zopfli   ║
╠══════════════╬═══════════╬═════════╬═════════╬═════════╬═════════╣
║Alexa-top-10k ║  693108837║128498665║125599259║125163521║123755118║
║Calgary       ║    3141622║  1017624║   980674║   978993║   974579║
║Canterbury    ║    2818976║   730732║   675163║   674321║   669933║
║enwik8        ║  100000000║ 36445248║ 35102976║ 35025767║ 34995756║
╚══════════════╩═══════════╩═════════╩═════════╩═════════╩═════════╝

Même sur des PNG aléatoires, Zopfli a pu être ,5% de mieux que pngout . Zopfli fait le plus petit de tous.

7
Anon

En supposant que vous êtes sous Windows: si vous souhaitez toujours utiliser le format Zip, je vous recommanderais d'utiliser l'utilitaire de ligne de commande KZIP gratuit de Ken Silverman, que vous trouverez ici . Copiez-le dans le dossier contenant tous les fichiers que vous devez compresser, accédez à ce dossier à l'aide de CMD et exécutez la commande suivante:

kzip /r <filename of Zip file> *.*

Comme Roald le suggère, il est préférable d'inclure le répertoire dans lequel kzip.exe se trouve dans la variable PATH de votre système afin d'éviter son inclusion dans le fichier archive/Zip.

Jusqu'ici, j'ai trouvé que les fichiers Zip créés avec KZIP étaient environ 10 à 20% plus petits que ceux créés par d'autres programmes de compression Zip. Ils peuvent également être entièrement ouverts par d’autres logiciels d’archivage (Winzip, WinRAR, 7-Zip, etc.) et par Windows.

5
Isxek

Super script simple pour compresser tous les dossiers d'un dossier en fichiers Zip individuels en utilisant le type de fichier .Zip et une méthode de compression Deflate64.

@echo off
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.Zip" "%%X\" -tzip -mx9 -mm=Deflate64
1
SuperMar1o