Quel format d'archivage / compression?


8

Zip, Rar, 7z, Gzip, BZip2, Tar etc. J'entends que 7z est la saveur du mois, pourquoi? Est-il préférable pour toutes les situations ou existe-t-il de meilleurs choix pour des situations spécifiques?

Ou peut-être que l'archiveur de fichiers réel, c'est-à-dire WinZip, WinRar, 7Zip, etc. (par opposition au format) a un effet plus important?

Dans votre réponse, pourriez-vous décrire le type de compromis vitesse / compression utilisé par votre format mentionné.

Veuillez fournir des liens vers tous les tests empiriques qui corroborent votre réponse.

Contexte: je dois sauvegarder un index de recherche personnalisé qui crée environ 3000 fichiers relativement petits (moins de 10 Mo), chacun contenant un grand nombre de données répétitives.

(Comme d'habitude, Wikipedia a un article pertinent, mais la section sur la comparaison des performances est brève.)

Merci

Réponses:


14

Compress, Gzip, Bzip, Bzip2 ne sont pas destinés à l'archivage de plusieurs fichiers. Ils ne compressent qu'un seul fichier. Pour l'archivage, ils sont généralement utilisés avec TAR. Le problème avec TAR est qu'il n'a pas de table d'index . Ce n'est bon que si vous prévoyez de restaurer le tout . Si vous vous attendez à devoir restaurer un nombre limité de fichiers sélectionnés, oubliez TAR. Pour obtenir le dernier fichier tar.gzou l' tar.bz2archiver, vous devez décompresser et traiter tout cela. Dans le cas de zip, rar ou 7-zip, il ira à la table d'index, passera à la position appropriée de l'archive et ne traitera que les fichiers pertinents.

Ok, TAR est sorti, ce qui vous laisse avec ZIP, RAR et 7-ZIP. De ces trois, ZIP est le plus proliféré, presque tout le supporte, de nombreuses applications ont un support intégré. Et c'est rapide. D'un autre côté, le 7-ZIP est également portable, la bibliothèque est LGPL, et a des taux de compression bien meilleurs que les deux autres, ce qui revient à être plus consommateur de CPU. RAR y est vraiment perdant, ni grande compression, ni vraiment portable, ni rapide.

EDIT: semble que la meilleure option serait 7-ZIP, mais avec la méthode de compression bzip2. De cette façon, vous n'aurez pas les inconvénients de TAR, mais vous pourrez toujours profiter de la prise en charge multicœur bzip2. Consultez cet article.


Excellente information, merci. J'avais vu TAR dans mon jeu avec Linux mais je ne l'avais jamais regardé de près.
Ash

Je devrais être en désaccord sur rar. La compression est bonne (par rapport à gzip atleast) et la vitesse semble correcte dans mes cas d'utilisation. Une chose que j'aime chez rar, c'est qu'il peut gérer le contenu en streaming ou des fichiers individuels, et vous permet d'inclure automatiquement un horodatage dans le nom de fichier ...
Dscoduc

10

Lecture recommandée:

Compression de fichiers à l'ère multicœur (Jeff Atwood aka CodingHorror, février 2009)

J'ai encore joué un peu avec la compression de fichiers, car nous générons quotidiennement de très gros fichiers de sauvegarde sur Stack Overflow.

Nous utilisons la dernière version 64 bits de 7zip (4.64) sur notre serveur de base de données. Je ne suis pas un grand fan de plus de dual core sur le bureau, mais c'est une évidence pour les serveurs. Plus il y a de cœurs, plus on est de fous! Ce serveur possède deux processeurs quad-core, un total de 8 cœurs, et j'étais un peu découragé de découvrir que ni RAR ni 7zip ne semblaient utiliser beaucoup plus de 2.

Pourtant, même s'il n'utilise que 2 cœurs pour compresser, l'algorithme 7zip est incroyablement efficace et a évolué au cours des dernières années pour être relativement rapide. J'avais l'habitude de recommander RAR sur Zip, mais étant donné l'efficacité accrue de 7zip et le fait qu'il soit gratuit et que RAR ne l'est pas, c'est le choix logique maintenant.

Et concernant les algorithmes:

Pourquoi bzip2 est-il capable de fonctionner beaucoup plus rapidement que 7zip? [...] Bzip2 utilise plus de 2 cœurs CPU pour paralléliser son travail.


Merci pour le lien. Nous savons certainement que le point de vue de Jeff est basé sur l'expérience de la vie réelle!
Ash

4

Ce n'est pas une question d'efficacité et de vitesse. Bien sûr, ils sont importants et vous pouvez regarder les repères pour ceux-ci et choisir judicieusement parmi les options (bien que je vous recommande une simple analyse comparative avec vos propres données sur votre propre serveur). Mais l'archivage conduit inévitablement à un moment donné à accéder à nouveau à vos données (sinon pourquoi ne pas simplement les supprimer?). Ou peut-être des années plus tard, ce ne sera pas du tout vous qui accéderez aux données, mais quelqu'un de tiers. Choisissez quelque chose qui existera lorsque vous aurez besoin d'accéder aux données et quelque chose que les gens reconnaîtront. J'utilise personnellement 7zip, mais lorsque j'archive des fichiers, d'autres peuvent en avoir besoin, j'utilise zip. Ils le savent, beaucoup d'outils peuvent le gérer. Ce n'est peut-être pas aussi rapide ou aussi petit, mais cela contribue au facteur humain.


Bon point. Cet index de recherche extraira des données directement de certains fichiers compressés. C'est pourquoi je suis intéressé s'il existe des formats offrant des performances de compression / décompression configurables. Je regarde donc plus l'aspect compression que l'archivage pour l'aspect futur.
Ash

3

lzma semble très bien fonctionner en termes de taux de compression et de vitesse.

Dans les http://tukaani.org/lzma/benchmarks suivants, le paramètre le plus rapide pour lzma a donné des temps de compression considérablement plus rapides que l'option bzip2 la plus rapide, tout en offrant une compression meilleure que l'option bzip2 la plus lente:

    ratio bzip2 lzmash
    le plus rapide 35,8% 31,7%       
    le plus lent 34,0% 25,4%

    temps bzip2 lzmash  
    le plus rapide 1m 26s 0m 58s  
    le plus lent 2m 37s 12m 20s

    * Compression de l'installation complète d'OpenOffice.org 1.1.4 pour Linux (203 Mo) 

Il fonctionne particulièrement bien avec les données binaires, mais je pense que j'ai lu certains repères de texte brut où bzip2 l'a surpassé.

La page de manuel lzma mérite d'être lue:

   lzma  provides  notably  better compression ratio than bzip2 especially
   with files having other than plain text content. The other advantage of
   lzma  is fast decompression which is many times quicker than bzip2. The
   major disadvantage is that achieving  the  highest  compression  ratios
   requires  extensive  amount of system resources, both CPU time and RAM.
   Also software to handle LZMA  compressed  files  is  not  installed  by
   default on most distributions.

Moi non plus jusqu'à la semaine dernière quand quelqu'un l'a recommandé sur une de mes questions de panne de serveur. Cela a l'air impressionnant, il vaut juste la peine d'étudier les performances avec du texte brut, si vous l'utilisez pour cela.
Guy C

LZMA est le nom de l'algorithme utilisé dans 7-zip.
vartec

2

Jetez un oeil à cette entrée Wikipedia . Vers le bas, "Comparaison de l'efficacité". Il vous donnera approximativement le pourcentage de compression et le temps nécessaire. Tous ces nombres varient (en fonction de la vitesse) en fonction de la vitesse de la machine utilisée, de la quantité de mémoire, etc.

Plus de repères de compression:


Merci, mais j'ai lu cela et j'ai pensé que c'était un peu bref (voir mon point dans la question). Connaissez-vous des tests plus détaillés dans des scénarios plus variés?
Ash

Ajout de quelques liens qui, je l'espère, fourniront plus d'informations.

2

Comparaison du zip, 7z, rar avec deux étuis

Cela dépend de ce que vous compressez exactement, mais en général 7z utilise mieux plusieurs processeurs, et le format de compression 7z lui-même donne une compression plus élevée que zip, et parfois plus élevée que rar (bien que rar et 7z soient presque équivalents, mais rar isn pas gratuit ...)

Mes tests d'il y a quelques mois ont donné ces résultats:

Compression d'un seul fichier de base de données d'accès de 10 Mo:

Database.mdb 17,240,064 (original)
Database.zip  1,634,794 (Regular zip, 11:1)
Database.rar    262,212 (RAR compression, 66:1)
Database.7z     195,678 (7-zip compression, 88:1)

Compression d'un dossier contenant plus de neuf mille fichiers de types différents (903 488 Ko) et obtenu les éléments suivants (il s'agit d'une combinaison de code source et de tous les outils qui l'entourent pour les logiciels en cours de développement):

Type   Time  Size (KB)  Compression
ZIP    7:28   247,529   3.7:1
RAR    8:15   222,232   4.1:1
7z    10:49   181,633   5.0:1

Pour des raisons de temps, c'était sur un Core2 Duo, 2 GHz, 1 Go de RAM et un disque dur bon marché.

Donc, 7z a donné une amélioration substantielle du taux de compression dans les deux cas que j'ai testés au-dessus et au-delà de zip, et même amélioré sur rar, mais 7z était certainement plus lent. Pas vraiment, mais assez pour être noté.

-Adam


Bons tests. Cette compression MDB est énorme. Je reçois seulement 4 à 1 sur les fichiers de mots d'index binaires de 100k sur lesquels j'ai testé. Je suppose que cela montre à quel point il est important de tester en utilisant des fichiers / données similaires à ce que votre système utilisera.
Ash

Oui, les fichiers MDB sont tous duveteux et sans substance. Un fichier binaire va obtenir moins (car il utilise les 8 bits, tandis que les fichiers texte utilisent un peu plus de 6 bits) et les chances sont bonnes qu'il n'y ait pas beaucoup de duplication. Il est toujours important de tester cependant. Vous pourriez avoir plus de chance de jouer avec les paramètres de compression - parfois, vous pouvez l'optimiser pour l'utilisation et obtenir mieux que les paramètres standard.
Adam Davis

0

Je viens d'installer Dar (mais je n'ai pas encore eu l'occasion de jouer avec). Il est similaire à tar avec compression gzip ou bzip2, avec la possibilité supplémentaire de diviser l'archive en plusieurs parties et de calculer la parité de sorte que si une ou plusieurs parties sont corrompues, elle puisse être reconstruite à partir des fichiers de parité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.