Quel est le plus efficace - compression tar ou zip? Quelle est la difference entre tar et zip?


68

Je travaille dans un environnement Linux et souhaite connaître les commandes tar et zip.

Qu'est-ce qui est plus efficace - tar ou zip? J'ai également besoin de connaître les différences entre les commandes tar et zip. Quelqu'un peut-il m'expliquer?

Réponses:


78

tarcrée un seul fichier à partir de plusieurs fichiers. La compression n’est effectuée que si vous combinez un programme de compression tel que gzipou bzip2(que vous pouvez appeler de l’intérieur tarà l’aide des options -zou -j, respectivement). zipcombine à la fois l’archivage et la compression dans un programme.


60

le goudron

  • Supposons que vous lisiez d'un bout à l'autre - "Archivage sur bande". (L'âge de la commande montre ...)
  • Ne fait pas de compression, mais vous pouvez compresser l'intégralité du flux résultant en le passant à travers, par exemple, gzip et bzip2 (effectué en interne avec -z ou -j)
  • Stocke les attributs de fichier unix : uid, gid, autorisations (notamment exécutables). La valeur par défaut peut dépendre de votre distribution et peut être modifiée avec des options.

Zip *: français

  • Stocke les attributs MSDOS . (Archive, Readonly, Hidden, System)
  • Compresse chaque fichier, puis les ajoute à une archive
  • Inclut une table de fichiers à la fin du fichier
  • et à la suite des deux précédents, permet de lire uniquement les parties exactes du fichier dont vous avez besoin.

Le fait que le fichier zip comprime les fichiers séparément aura un impact sur les taux de compression, en particulier sur de nombreux petits fichiers similaires.

(Au moins, c'était exactement ça il y a dix ans.)


23

Tar conserve beaucoup plus de métadonnées que Zip, voir ma comparaison (elle est un peu dépassée):

entrez la description de l'image ici

(Cliquez pour zoomer)

Le goudron passe 65% des tests, alors que Zip ne réussit que 17%. J'ai rendu la suite de tests disponible sur github sous licence BSD afin que vous puissiez essayer par vous-même si vous avez un Mac. Pour Linux, je ne suis pas sûr s'il existe des métadonnées, donc ces tests peuvent ne pas être pertinents.


Intéressant! +1 pour cela. Mais là encore, c'était un programme énorme. Avez-vous écrit cela dans un autre but? Juste curieux.
CppLearner

J'ai écrit les tests pour un gestionnaire de fichiers sur lequel je travaillais il y a quelques années. Jamais publié cependant.
Neoneye

1
Linux a aussi des métadonnées, donc ça devrait marcher.
Zeitue

14

L'efficacité peut être mesurée de différentes manières:

  1. Combien de temps dure le processus?
  2. Quelle est la taille des fichiers résultants?

Il existe également d'autres questions, telles que "Quelle est la fréquence des outils pour manipuler les archives résultantes?"

Ainsi, par exemple, bzip2crée des fichiers plus petits que gzip, mais cela peut prendre beaucoup plus de temps. De plus, mon expérience gzipest universelle sur les systèmes de type Unix, mais ne l’ bzip2est toujours pas (bien que ce soit très courant et généralement facile à obtenir).


3
7zip ( 7-zip.org ) est une autre bonne option pour obtenir une excellente compression aux dépens du temps de calcul . Moins commun que bzip2 (pas installé par défaut partout où je sache) mais facile à installer dans la plupart des endroits (il se trouve dans les référentiels standard de la plupart des distributions Linux et il existe un simple paquet d'installation pour Windows. Comme tar + gzip, il porte le La fenêtre de compression entre les fichiers d'entrée permet donc de réaliser des économies encore plus importantes avec zip en incluant de nombreux petits fichiers
David Spillett

3
L'efficacité peut également être mesurée par la manière dont elle conserve les données, voir ma réponse à cette question. Tar est bien meilleur que zip pour préserver les données.
Neoneye

1
une autre mesure doit être compatible en dehors de UNIX. Windows est correct avec zip (intégré à Windows), il est généralement facile de traiter tar.gz avec un partagiciel, mais bzip2 est rare. Malheureusement, Original Question n'a pas mentionné ces critères, vous ne pouvez donc pas voir s'ils sont pertinents.
Rich Homolka

1
Une fois, j’ai fait un examen approfondi du taux de compression par rapport au temps requis pour certains compresseurs courants, et qui serait le plus efficace en fonction de la valeur que vous accordez à l’
Wim

9

Comme Wim l'a noté, le goudron lui-même ne se compresse pas. Si vous ajoutez compresser le fichier tar (par exemple, pour obtenir un fichier .tar.gz ou .tar.bz2), vous compressez tout le fichier tar en même temps. En revanche, le zip compresse chaque fichier individuellement.

L'efficacité dépend de la charge de travail. Plus précisément, zip vous permet d'accéder directement à des fichiers individuels. Avec tar, vous devez d'abord rechercher dans les fichiers indésirables (compressés) avant. Les performances de compression dépendent de ce que vous compressez. tarCela bzip2vaut souvent mieux avec un grand nombre de fichiers similaires (par exemple un répertoire source). zippourrait être mieux si chaque fichier a un contenu très différent.


4
... d'autre part, vous devez obtenir le fichier zip complet avant de pouvoir accéder au contenu, car le toc est placé à la fin. en revanche, vous pouvez décompresser un goudron aussi vite que les octets arrivent ...
akira

6

Les archives Zip contiennent un répertoire central de leur contenu à la fin (vous éviterez probablement de le créer au préalable, car vous ne savez pas encore ce qu’il y aura à l’intérieur). Cela permet d’extraire rapidement des fichiers uniques sans avoir à décompresser l’archive complète: il suffit de lire le répertoire d’archive et d’extraire uniquement ce qui est nécessaire. Cependant, cela nécessite que l'ensemble de l'archive soit accessible, ainsi que l'accès aléatoire, disponible uniquement sur des périphériques en mode bloc (disquettes, disques durs). De plus, le répertoire d'archivage est vulnérable: si l'archive est tronquée pour une raison quelconque, il faut beaucoup de magie pour extraire tout élément utile de l'archive.

Les archives Zip ont été créées pour être utilisées par BBS, où il était important de pouvoir regrouper le contenu d'un répertoire dans un seul fichier (et compressé) - au lieu de devoir télécharger des milliers de fichiers uniques. Un peu comme la plupart des sites Web regroupent leurs téléchargements, même aujourd'hui, pour les mêmes raisons.

Les archives Tar ont été conçues pour regrouper les sauvegardes à utiliser pour les lecteurs de bande, donc pour un accès séquentiel . Il n'y a pas de répertoire central; à la place, l'archive contient des blocs d'en-tête à intervalles réguliers indiquant les fichiers qui suivront dans les prochains blocs. Les archives tar sont destinées à être lues d'un seul coup; si un seul fichier doit être extrait, l'archive est lue séquentiellement, du début jusqu'à la recherche du fichier demandé (qui peut aussi bien se trouver à la toute fin). La compression est appliquée en plus de cela; chacun des divers programmes de compression qui sont appliquées aux archives de goudron ( compress, gzip,bzip2etc.) sont des compresseurs de flux et ne modifient en aucune manière la nature séquentielle de l’archive. Dans le pire des cas, vous aurez besoin d'un peu plus de blocs jusqu'à ce que vous puissiez commencer à extraire.

Cela peut sembler une différence anodine, mais représente en réalité un opposé extrême en philosophie. Avec les archives zip, il est toujours nécessaire d’avoir tout le fichier sous la main pour pouvoir faire quoi que ce soit d’utile, alors qu’une archive tar peut être transmise en continu à un pipeline. Je peux télécharger une grande archive tar et commencer à l'extraire dès le début, dès que les premiers blocs entrent (et peut-être interrompre le téléchargement dès que je reçois le fichier que je cherche). Pour une archive Zip, je dois attendre que le répertoire archive apparaisse, ce qui arrive tout à la fin de l'archive. Mais une fois que je n'avoir le fichier entier à portée de main, extraire le contenu partiel de celui - ci sera beaucoup plus rapide à partir d' un fichier tar.

Les deux formats ont un point fort, selon où et comment ils sont utilisés. Comme les pipelines (et donc la notion de transmission en continu de données d'un processus à un autre) n'existent que dans le monde Unix, le principal avantage des archives tar est perdu sur d'autres systèmes, ce qui explique pourquoi les archives Zip y sont beaucoup plus populaires. Mais les archives tar sont plus flexibles, c'est pourquoi je les préfère chaque fois que j'ai le choix.


5

Comme l’autre déjà dit, tar crée un grand "bloc" de tous les fichiers pouvant être compressés avec un flux tel que gzip ou bzip2.

L'inconvénient est que vous devez décompresser tout le fichier pour accéder à un fichier de l'archive.

L'avantage de ceci est que le taux de compression est généralement plus élevé, en particulier lorsque les fichiers compressés sont très similaires.

D'autres emballeurs comme "rar" ont un "mode bloc" (ou similaire) ayant le même effet.

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.