Comment puis-je évaluer le meilleur choix de format d'archive pour compresser des fichiers?

24

En général, j'ai observé ce qui suit:

  • Les fichiers ou outils Linux-y utilisent bzip2 ou gzip pour distribuer des archives
  • Les fichiers ou outils Windows-y utilisent ZIP pour distribuer des archives
  • Beaucoup de gens utilisent 7-Zip pour créer et distribuer leurs propres archives

Des questions:

  • Quels sont les avantages et les inconvénients de ces formats, qui semblent tous être des formats ouverts? Quand / pourquoi devrais-je en choisir un (disons, 7-Zip) plutôt qu'un autre (disons, ZIP)?
  • Pourquoi la tendance ci-dessus semble-t-elle se maintenir, même si tous ces formats sont portables? Y a-t-il des avantages particuliers à utiliser un format d'archive particulier sur une plate-forme particulière?
Mehrdad
la source
1
Voir aussi: stackoverflow.com/questions/2397474/…
Thomas Bonini
@Sathya, @Andreas: Merci pour les liens, ceux-ci sont utiles et répondent à certaines parties de ma question. :)
Mehrdad
1
La compression est un domaine assez complexe, et aucun algorithme ne peut produire des résultats optimaux pour tout - en outre, c'est un problème auquel vous pouvez jeter des ressources et obtenir de meilleurs résultats, mais aussi un problème qui peut être fait presque aussi bien en beaucoup moins de temps. Certains algorithmes se concentrent sur la rapidité et la légèreté de la mémoire, certains se concentrent sur la production du plus petit fichier possible, peu importe le temps qu'il faut ou si vous avez besoin de 12 Go de RAM (sans exagérer) pour le faire, etc.
Phoshi
1
@Phoshi, cela devrait être une réponse.
Yitzchak

Réponses:

16

Il existe une grande variété de formats et de méthodes de compression disponibles, certains ne compressent pas du tout et sont conçus pour stocker un certain nombre de fichiers dans une archive, et d'autres compresseurs expérimentaux plus récents ( basés sur PAQ ) sont conçus pour compresser aussi agressivement que possible, quel que soit le temps nécessaire pour effectuer ladite opération.

Vous devez évaluer les fonctionnalités dont vous avez besoin à partir de votre choix de méthode de compression et également tenir compte du contexte dans lequel il sera utilisé.

Différentes caractéristiques et considérations incluent:

  • Capacité de compression - Réduit-il suffisamment le fichier?
  • Facilité d'utilisation - Si le fichier est destiné à un autre utilisateur, l'archive sera-t-elle facile à extraire ou nécessitera-t-elle l'installation de plus de logiciels?
  • Protection par mot de passe et / ou cryptage - Ces mesures de sécurité sont-elles nécessaires?
  • Prise en charge de plusieurs volumes - Si le support cible nécessite que le fichier soit divisé en morceaux appropriés, le format le prend-il en charge avec élégance. Par exemple, 650 Mo pour un CD.
  • Réparation et récupération - Si le fichier devient partiellement corrompu, offre-t-il un enregistrement de récupération pour faciliter la restauration des données?
  • Prise en charge Unicode - L'archiveur prend-il en charge les noms de fichiers internationaux ou simplement ASCII standard?
  • Configuration requise - Les compresseurs modernes tels que 7-Zip offrent la possibilité d'augmenter l'efficacité de la compression en utilisant un dictionnaire plus grand (un dictionnaire est une référence de données fréquemment répétées dans un fichier compressé), mais cela augmente à son tour la consommation de mémoire à la compression et temps de décompression.
  • Prise en charge de l'auto-extraction - L'archive peut-elle être roulée dans un fichier exécutable qui offre une facilité d'utilisation à quiconque a besoin de l'utiliser? (Gardez également à l'esprit que vous ne pouvez créer un auto-extracteur que pour une seule plate-forme. En règle générale, un auto-extracteur Windows ne fonctionnera pas sur Linux par défaut, sauf s'il passe par une couche de compatibilité comme Wine).
  • Attributs du système de fichiers - Le compresseur stocke-t-il les métadonnées et les autorisations pertinentes du système de fichiers qui méritent d'être conservées au point d'extraction?

En règle générale, ZIP est le format le plus omniprésent, mais les tailles supérieures à 4 Go ne sont généralement pas prises en charge (le cas échéant), la prise en charge de la sécurité est généralement considérée comme médiocre (le mot de passe standard peut être compromis avec une attaque en texte brut et un chiffrement supplémentaire est généralement implémenté comme un dérivé non officiel du format par les éditeurs de logiciels ZIP commerciaux).

En dehors de cela, la plupart des autres formats populaires auront une forme de prise en charge sur tous les systèmes d'exploitation en installant plus de logiciels.

Mon choix personnel est 7-Zip , car il a une compression excellente et flexible; bien qu'il ait une interface utilisateur particulière sur Windows. Il existe des décompresseurs pour Linux et Mac OS X (bien qu'ils ne soient pas basés sur une interface graphique standard).

Ruairi Fullam
la source
3
Si l'archive est destinée à la distribution, il est également important de prendre en compte votre public cible et d'utiliser un format pris en charge par défaut sur leur plate-forme. L'accessibilité peut être plus importante que les autres considérations dans ce cas.
hammar
+1 merci pour l'information, mais il aurait été encore mieux de mentionner les formats qui prennent en charge ces puces. :)
Mehrdad
J'étais tenté mais il existe une multitude de formats disponibles, ce qui prendrait beaucoup de temps à lister. Wikipedia a une bonne matrice de fonctionnalités de formats de compression qui peut aider: en.wikipedia.org/wiki/Comparison_of_archive_formats
Ruairi Fullam
1
L'histoire enseigne une leçon importante en ce qui concerne les fichiers d'archive à extraction automatique. Il y a des archives auto-extractibles d'il y a deux décennies que les gens ne peuvent plus auto-extraire parce que leurs machines ne peuvent pas exécuter de programmes MS / PC-DOS, ou parce que les programmes auto-extractibles se bloquent à la suite de changements de processeur, ou parce que les extracteurs se plaignent que les disques sont pleins quand ils ne le sont pas car ils ne s'attendent pas à ce que les disques soient si gros, ou…
JdeBP
Ce point est certainement discutable, je n'ai pas rencontré ce problème particulier mais je peux le voir se produire; Je suppose que tout dépend de l'objectif final de création de l'archive et de la longévité attendue de l'utilisation des fichiers. Certes, si vous avez une ancienne archive difficile à extraire de l'ère DOS, vous pouvez utiliser DOSBox, ou même créer une machine virtuelle si nécessaire.
Ruairi Fullam
8

Une chose qui me vient à l'esprit est un article de blog (âgé de deux ans) de Jeff Atwood: File Compression in the Multi-Core Era . Dans cet article, il constate que bzip2 surpasse 7-zip lors de l'exécution de plus de deux cœurs.

matpe
la source
+1 omg! Je ne le savais pas. Le taux de compression ne semble cependant pas en valoir la peine. :)
Mehrdad
2
Ce poste a plus de 2 ans. Le 7-zip ne fonctionne-t-il pas mieux avec plus de deux cœurs maintenant?
cregox
BZIP2 compresse plus efficacement sur plusieurs cœurs car il se comprime en blocs de 100 à 900 Ko, ce qui permet de répartir les blocs sur des cœurs séparés, mais l'efficacité de la compression est perdue car ces blocs sont considérés comme distincts les uns des autres.
Ruairi Fullam
4

Pour votre première question, 7-Zip est un archiveur qui peut utiliser de nombreux algorithmes pour compresser et décompresser des données.

Pour votre deuxième question, assurez-vous simplement que la plate-forme prend en charge les outils qui prennent en charge le format donné. Par exemple, j'éviterais d' utiliser RAR sur un Mac. Bien qu'il soit possible d'utiliser, et qu'il existe des utilitaires gratuits qui le prennent en charge, ils n'ont pas l'interface beaucoup plus riche que les utilitaires Windows qui prennent en charge RAR (selon mon expérience).

soandos
la source
Alors que je déteste personnellement les programmes graphiques rar et utilise toujours la ligne de commande, même sous Windows.
CarlF
4

Comme d'autres l'ont mentionné, le choix d'un format de compression particulier dépend fortement de l'utilisation et du public visé.

  • Les archives .tar.gz et tar.bz2 sont idéales pour une utilisation sur les systèmes Linux (et par extension pour partager des fichiers avec des utilisateurs Linux) car les outils tar, gzip et bzip2 sont largement omniprésents sur la plate-forme et parce que le format .tar est complet prise en charge des autorisations Unix et d'autres propriétés spécifiques à la plate-forme. Le choix entre gzip et bzip2 pour compresser l'archive tar est principalement une décision concernant la vitesse par rapport au taux de compression, bzip2 fournissant des fichiers plus petits mais avec une vitesse de compression beaucoup plus lente. Les inconvénients de ces formats incluent une moindre compatibilité avec Windows et le besoin (potentiel) de décompresser l'archive entière pour extraire un seul fichier.

  • Les archives ZIP peuvent être extraites sur la plupart des plates-formes à l'aide d'outils natifs, c'est donc un choix idéal pour envoyer une archive à un utilisateur non technique qui ne serait pas à l'aise avec l'installation d'un logiciel d'archivage tiers tel que 7-Zip. Le niveau de compression n'est pas aussi bon que des algorithmes plus avancés et il ne prend pas en charge les autorisations Unix, mais c'est un excellent format si vous souhaitez envoyer une archive de photos de vacances à votre grand-mère, par exemple. ZIP fournit également une protection de base par mot de passe et peut rapidement extraire un fichier de n'importe où dans l'archive.

  • 7-Zip est bon si vous voulez les meilleurs taux de compression possibles. Comme ZIP, il ne prend pas en charge les autorisations ou la propriété des fichiers Unix, et n'est pas non plus installé par défaut sur la plupart des plates-formes, ce qui le rend légèrement plus pratique à utiliser, mais cela peut valoir la peine sous Windows si les gains de taux de compression sont importants. Dans un environnement tout Linux, il serait préférable d'utiliser les outils de compression 'xz' ou 'lzma' avec tar, qui fonctionnent exactement de la même manière que 'gzip' et 'bzip2' mais utilisent l'algorithme LZMA plus avancé comme 7 -Zip *: français.


la source
2

À titre d'exemple, j'utilise les formats mentionnés dans ces cas:

  • Fichiers texte (journaux notamment): bz2
  • Collection de fichiers à distribuer (ex: code source): gz (vraiment tar.gz).
  • Fichiers assortis: 7zip. Je peux compresser presque n'importe quoi de manière très efficace. Multiplateforme, open-source, stable, léger, cryptage de fichiers (en-tête et données), ... Pouvez-vous demander autre chose? :)

J'évite complètement RAR et chaque fois que je reçois un fichier RAR de quelqu'un que je connais, je lui dis d'arrêter d'utiliser ce format car il est propriétaire, et qu'il utilise probablement un logiciel sans licence (la plupart des gens téléchargent la version d'essai de WinRAR et continuent à utiliser pour toujours).

PS: je lance Ubuntu (principalement) et Windows (à la fois double démarrage et VirtualBox).

glarrain
la source
1

Il existe au moins quatre emplois distincts qui sont souvent confondus car les outils populaires les intègrent:

  1. Archivage: la possibilité de combiner plusieurs fichiers (y compris les métadonnées) en un seul fichier, en préservant autant de choses que possible. Dans le monde Linux / Unix, l'archivage se fait traditionnellement au format de fichier TAR.
  2. Compression: la capacité de minimiser sans perte la taille d'un flux de données binaires. Dans le monde Linux / Unix, cela se fait traditionnellement par GZip et BZip2.
  3. Cryptage: la possibilité de brouiller les données avec des clés
  4. Somme de contrôle: la capacité de détecter (et éventuellement de corriger) les erreurs.

L'omniprésence de .tar.gz et .tar.bz correspond à la philosophie Unix de petits outils qui font bien un seul travail, sur un seul outil qui fait tout. Le format de fichier TAR ne prend pas en charge la compression ou le chiffrement, mais il peut être compressé davantage par n'importe quel compresseur (y compris en tant que .tar.zip ou .tar.7z). Le travail de GZip et BZip2 consiste simplement à compresser un flux de fichiers vers un autre flux de fichiers, la couche de compression n'a pas besoin de savoir comment conserver les métadonnées ou le chiffrement ou la somme de contrôle. Au fil du temps cependant, plusieurs raccourcis ont été créés tarpour fonctionner plus facilement avec un compresseur.

Au format zip et 7z, ces tâches distinctes sont effectuées par un seul programme dans un seul super format de fichier.

Pourquoi la tendance ci-dessus semble-t-elle se maintenir, même si tous ces formats sont portables? Y a-t-il des avantages particuliers à utiliser un format d'archive particulier sur une plate-forme particulière?

Parce que c'est ainsi que les choses ont été faites, les codes source du programme sont traditionnellement distribués sous la forme .tar.gz ou .tar.bz2, car la préservation des autorisations sur les fichiers, le temps de modification, etc. sont importants pour divers outils utilisés pour la programmation (par exemple, make).

L'étape distincte d'archivage et de compression a très bien fonctionné pendant des années, elle a clairement l'avantage de pouvoir mélanger et assortir librement l'archivage et la compression, et son inconvénient (un processus de compression en 2 étapes) peut être facilement contourné en développant des outils plus intelligents ( le programme de compression linux le plus moderne se compressera directement en .tar.gz ou .tar.bz2, masquant l'étape intermédiaire).

Il n'y a aucune raison valable de passer à d'autres formats de fichiers, les compresseurs plus récents n'ont pas un taux de compression significativement meilleur pour justifier la rupture de la tradition et le tar peut tout bien conserver.

Lie Ryan
la source