web-dev-qa-db-fra.com

Qu'est-ce qui est plus efficace - la compression tar ou Zip? Quelle est la difference entre tar et zip?

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?

67
rekha_sri

tar crée un seul fichier sur plusieurs fichiers. Il ne fait pas de compression sauf si vous combinez un programme de compression tel que gzip ou bzip2 (que vous pouvez appeler à partir de tar en utilisant les options -z ou -j, respectivement). Zip combine l'archivage et la compression dans un programme.

78
Wim

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 tout le flux résultant en le passant par ex. gzip et bzip2 (fait 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 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 tout à fait correct il y a dix ans.)

59
MaHuJa

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

 enter image description here

(Cliquez pour agrandir)

Le goudron réussit 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.

22
neoneye

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 y a aussi d'autres questions, telles que "Quelle est la fréquence des outils pour manipuler les archives résultantes?"

Ainsi, par exemple, bzip2 crée des fichiers plus petits que gzip, mais cela peut prendre beaucoup plus de temps. De plus, selon mon expérience, gzip est universel sur les systèmes de type Unix, mais bzip2 ne l'est toujours pas (même s'il est très courant et généralement facile à obtenir).

14
Telemachus

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 le fichier tar entier en même temps. En revanche, 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. tar avec bzip2 est souvent préférable pour un grand nombre de fichiers similaires (par exemple, un répertoire source). Zip pourrait être mieux si chaque fichier a un contenu très différent.

9
Matthew Flaschen

Les archives Zip contiennent un répertoire central de leur contenu à la fin (vous éviterez probablement de devoir créer le répertoire à l’avance, 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, et requiert un accès aléatoire qui n'est disponible que 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 rien utile à partir 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 éventuellement des milliers de fichiers individuels. 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 avec les lecteurs de bande, donc pour 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 de manière séquentielle, 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 appliqués aux archives tar (compress, gzip, bzip2 etc.) est un compresseur de flux et ne modifie en rien le caractère séquentiel 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 quelque chose 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 do ai le fichier entier à portée de main, il sera beaucoup plus rapide d’en extraire le contenu partiel à 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.

6
Vucar Timnärakrul

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.

5
IanH