Meilleure méthode de compression?

53

Je veux compresser un dossier de 16 Go, mais quelle est la meilleure méthode? tar.gz? tar.bz2 rar? 7z? L'archive serait-elle plus petite si je compressais d'abord dans une méthode, puis copiais l'archive compressée dans un nouveau dossier, puis recompressée d'une autre manière? Je dois le faire tenir sur un DVD (la sortie peut-être 8,5 Go, mais je ne me souviens pas), mais avec "4370 Mo", le fichier compressé contient 2,5 Go.

BTW, quelle est la méthode de compression par défaut sur Ubuntu?

Amanda
la source

Réponses:

70

Le défaut est gz. Les meilleurs résultats que je reçois 7zcependant.

Voici les résultats pour un conteneur de virtualbox de 1,4 Go:

entrez la description de l'image ici

Meilleure compression - taille en Mo:

7z 493
rar 523
bz2 592
lzh 607
gz 614
Z 614
zip 614
.arj 615
lzo 737
zoo 890

La source

entrez la description de l'image ici

Installer

 sudo apt-get install p7zip-full
Rinzwind
la source
Merci, j'ai déjà installé 7z et rar via Software Center. Je vais essayer avec 7z.
Amanda
1
D'où viennent ces résultats? Pour chaque algorithme, le taux de compression et la vitesse dépendent beaucoup de ce que vous essayez de compresser. Essayez de compresser certaines données provenant de /dev/urandom: vous obtiendrez des résultats différents à chaque essai. Ou essayez /dev/zero: bzip2 est le gagnant (pour le ratio).
Andrea Corbellini
1
@AndreaCorbellini le lien est dans la réponse alors cliquez dessus !? et comme je l'ai dit: il est basé sur un conteneur de virtualbox 1.4. Je suis d'accord pour dire que la compression dépend en grande partie de quels fichiers il s'agit mais, après quelques années d'expérience, 7z semble être meilleur pour les fichiers que j'ai tendance à avoir (principalement des logiciels et des fichiers de données binaires)
Rinzwind
1
@Rinzwind: Je suis vraiment désolé, je n'ai pas vu le lien Source .
Andrea Corbellini
1
@AndreaCorbellini ça va;) espérons que Amanda rend compte des résultats: +
Rinzwind
14

Cette question est très ancienne, mais peut-être que quelqu'un trouve cette solution utile:

Utilisez rzip, après tar. Il compresse d'abord des blocs de données volumineux de 900 Mo à l'aide d'une méthode de dictionnaire, puis transmet les données nettoyées bzip2. Il est beaucoup plus rapide que les autres outils de compression puissants ( bzip2, lzma), et il compresse certains fichiers encore mieux que bzip2ou lzma.

Oui, gzl'outil de compression par défaut sous Linux. Il est rapide et malgré son âge, il donne encore de très bons résultats en compressant des fichiers texte tels que le code source. Un autre outil standard est bzip2, bien qu'il soit beaucoup plus lent.

Ajout: lrzip est plus récent et étend le principe de rzip. Il prend même en charge des tailles de bloc illimitées et un choix de méthodes de compression (LZMA, Bzip2, Gzip, LZO, ZPAQ ou aucune). LZMA est la norme. Pour la sauvegarde ou si vous partagez beaucoup de données avec d'autres utilisateurs de Linux / BSD, cela peut s'avérer très pratique.

utilisateur258532
la source
Je pense que vous vouliez parler de blocs de 900 ko? 900 Mo, ce serait un peu gros ...
Byte Commander
1
C'est en réalité 900 MB. See en.wikipedia.org/wiki/Rzip
user258532 Le
2

J'opte pour un LZMA. Il a la plus petite surcharge d'octet et a un fort taux de compression. Comparaison entre ZIP et LZMA: j'ai généré deux fichiers seq.txtavec du code PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

qui contient des blocs répétés de 0..9 chiffres ~ 1 Mo de données et rnd.txtavec du code PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

qui contient des blocs aléatoires de 0..9 chiffres ~ 1 Mo de données.

Résultats de compression:

  • seq.txt, rnd.txt - 1100000 octets
  • seq.txt.zip - 2502 octets
  • rnd.txt.zip - 515957 octets
  • seq.txt.lzma - 257 octets
  • rnd.txt.lzma - 484939 octets

Ratio de compression:

  • ZIP -> "seq.txt" -> 99.772%
  • ZIP -> "rnd.txt" -> 53.094%
  • LZMA -> "seq.txt" -> 99,976%
  • LZMA -> "rnd.txt" -> 55.914%

Ainsi, LZMA a compressé les données séquentielles de 0,2% plus efficacement que
les fichiers ZIP et les données aléatoires de 2,8% plus efficacement que les fichiers ZIP.

Bien sûr, LZMA gagne!

Agnius Vasiliauskas
la source