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?
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.
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
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
.
(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 .
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.