web-dev-qa-db-fra.com

Quel logiciel de compression de fichiers pour Linux offre la réduction de taille la plus élevée?

Je fais une tonne de compression de fichiers. La plupart des éléments que je compresse ne sont que du code, je dois donc utiliser une compression sans perte. Je me demandais s'il y avait quelque chose qui offre une meilleure réduction de taille que 7Zip. Peu importe le temps nécessaire pour compresser ou décompresser, la taille est tout ce qui compte. Quelqu'un connaît-il un logiciel comme celui-ci sous Linux? Ou 7Zip est-il le meilleur?

54
Zach

7Zip est plus un compacteur (comme PKZIP) qu'un compresseur. Il est disponible pour Linux, mais il ne peut créer que des archives compressées dans des fichiers normaux, il n'est pas capable de compresser un flux par exemple. Il n'est pas capable de stocker la plupart des attributs de fichiers Unix comme la propriété, les ACL, les attributs étendus, les liens durs ...

Sous Linux, en tant que compresseur, vous avez xz qui utilise le même algorithme de compression que 7Zip (LZMA2). Vous pouvez l'utiliser pour compresser des archives tar.

Comme pour gzip et bzip2, il existe une variante parallèlepixz qui peut utiliser plusieurs processeurs pour accélérer la compression (xz peut également le faire de manière native depuis la version 5.2.0 avec le -T option). La variante pixz prend également en charge indexation une archive tar compressée, ce qui signifie qu'elle est capable d'extraire un seul fichier sans avoir à décompresser le fichier depuis le début.

42

lrzip est ce que vous vraiment recherchez, surtout si vous compressez le code source!

Citant le README:

Il s'agit d'un programme de compression optimisé pour les fichiers volumineux. Plus le fichier est volumineux et plus vous disposez de mémoire, meilleur est l'avantage de compression que cela vous procurera, en particulier une fois que les fichiers dépassent 100 Mo. L'avantage peut être choisi pour être soit la taille (beaucoup plus petite que bzip2) ou la vitesse (beaucoup plus rapide que bzip2). [...] La caractéristique unique de lrzip est qu'il essaie de tirer le meilleur parti du ram disponible dans votre système à tout moment pour un maximum d'avantages.

lrzip fonctionne en recherchant et en supprimant d'abord toute redondance de données longue distance avec un algorithme basé sur rzip, alors compressant les données non redondantes.

Con Kolivas fournit n exemple fantastique dans la liste de diffusion du noyau Linux ; dans lequel il comprime un tarball de 10,3 Go de quarante versions du noyau Linux à 163,9 Mo (1,6%), et ce plus rapidement que xz. Il n'utilisait même pas l'algorithme de deuxième passe le plus agressif!

Je suis sûr que vous obtiendrez d'excellents résultats en compressant d'énormes tarballs de code source :)

Sudo apt-get install lrzip

Exemple (en utilisant par défaut pour les autres options):

Ultra compression, chien lent:

lrzip -z file

Pour les dossiers, changez simplement lrzip pour lrztar

70
Alexander Riccio

Si vous recherchez la plus grande réduction de taille quelle que soit la vitesse de compression, LZMA est probablement votre meilleure option.

Lorsque l'on compare les différentes compressions, le compromis est généralement le temps par rapport à la taille. gzip a tendance à compresser et décompresser relativement rapidement tout en produisant un bon taux de compression. bzip2 est un peu plus lent que gzip en temps de compression et de décompression, mais donne des taux de compression encore plus élevés. LZMA a le temps de compression le plus long mais donne les meilleurs ratios tout en ayant un taux de décompression supérieur à celui de bzip2.

Sources: http://bashitout.com/2009/08/30/Linux-Compression-Comparison-GZIP-vs-BZIP2-vs-LZMA-vs-Zip-vs-Compress.html

http://tukaani.org/lzma/benchmarks.html

6
j883376

(réponse mise à jour) Si le temps n'a pas d'importance, utilisez ZPAQ v1.10 (ou plus récent) ex .:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar (l'emplacement du fichier max.cfg peut varier, vérifiez la liste des fichiers de votre package installé)

zpaq effectivement compressé plus de kgb -9 newFileName.kgb yourFileName.tar.
Cela est basé sur un algorithme plus ancien PAQ6 , et est très lent ...
J'ai testé avec tous les autres compresseurs comme 7Zip, lrzip, bzip2, kgb .. et zpaq compressé le plus!

Si kgb vous intéresse toujours: (comme c'était mon choix initial sur cette réponse, je garde les informations ici)
Ubuntu 14.04 a kgb 1.0b4 , exécutez Sudo apt-get install kgb pour l'installer.

Ci-dessous, une version Windows que vous pouvez essayer d'exécuter/compiler kgb sur linux, mais je n'y suis pas parvenue.
La version 2 beta2 peut être trouvée sur SourceForge , mais aucun binaire Linux n'est disponible. Vous pouvez essayer de l'exécuter dans la console avec wine kgb2_console.exe -a7 -m9 (méthode -a6 -m9 semble être équivalent à la meilleure méthode de 1.0b4, -a7 est nouveau dans 2 beta2). Bien que j'aie eu une meilleure stabilité en installant .NET 2.0 avec winetricks et en exécutant wine "KGB Archiver 2 .net.exe" (Je n'aime pas un peu faire ça, donc je vais m'en tenir à Linux 1.0b4 natif qui a presque le même résultat que 2 beta2).
Quoi qu'il en soit, la version 2 beta2 mérite également une version native de Linux! Peut-être que quelque chose peut être accompli avec MinGW, voir this , mais cette commande échoue toujours mal: i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. Peut-être essayer de le compiler avec dmcs (Mono)? voir cette astuce .

4
Aquarius Power

7Zip n'est pas une technologie unique, mais prend en charge plusieurs méthodes de compression différentes (voir wikipedia 7z à ce sujet).

Un ensemble de tests a été effectué avec différents outils spécialement pour les fichiers source C. Je ne sais pas quels outils existent pour Linux s'ils existent encore. Cependant, vous pouvez noter que le meilleur algorithme était PPM avec modifications (PPMII, puis PPMZ).

Si les outils vous intéressent, vous pouvez parcourir le site, il est en russe mais google translate peut vous aider. Il y a un gros dépôt de binaires , que vous pouvez utiliser (ou ne pourrez pas) de Linux avec wine, si vraiment nécessaire.

2