Réponses:
tar
crée un seul fichier à partir de plusieurs fichiers. La compression n’est effectuée que si vous combinez un programme de compression tel que gzip
ou bzip2
(que vous pouvez appeler de l’intérieur tar
à l’aide des options -z
ou -j
, respectivement). zip
combine à la fois l’archivage et la compression dans un programme.
le goudron
Zip *: français
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.)
Tar conserve beaucoup plus de métadonnées que Zip, voir ma comparaison (elle est un peu dépassée):
(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.
L'efficacité peut être mesurée de différentes manières:
Il existe également 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, mon expérience gzip
est universelle sur les systèmes de type Unix, mais ne l’ bzip2
est toujours pas (bien que ce soit très courant et généralement facile à obtenir).
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. tar
Cela bzip2
vaut souvent mieux avec 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.
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
,bzip2
etc.) 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.
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.