Les archives Zip contiennent un répertoire central de leur contenu à la fin (probablement pour éviter d'avoir à créer le répertoire au préalable, où vous ne savez pas encore ce qu'il y aura à l'intérieur). Cela permet d'extraire rapidement des fichiers individuels sans avoir à décompresser l'archive entière : Il suffit de lire le répertoire de l'archive et d'extraire uniquement ce qui est nécessaire. Cependant, cela nécessite que l'archive entière soit accessible, et requiert accès aléatoire qui n'est disponible que sur les périphériques en bloc (disquettes, disques durs). En outre, le répertoire d'archives est vulnérable : Si l'archive est tronquée pour une raison ou une autre, il faut faire preuve de beaucoup d'ingéniosité pour extraire tout ce qui est utile de l'archive.
Les archives Zip ont été créées pour les BBS, où il était important de pouvoir regrouper le contenu d'un répertoire en un seul fichier (compressé), au lieu de devoir télécharger des milliers de fichiers. De la même manière que la plupart des sites Web regroupent leurs téléchargements aujourd'hui encore, pour les mêmes raisons.
Les archives Tar ont été conçues pour regrouper les sauvegardes afin de les utiliser pour les lecteurs de bandes, et donc pour accès séquentiel . Il n'y a pas de répertoire central, mais l'archive contient des blocs d'en-tête à intervalles réguliers qui indiquent les fichiers qui suivront dans les blocs suivants. 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, en commençant par le tout début jusqu'à ce que le fichier demandé soit trouvé (ce qui peut aussi bien être à 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.) sont des compresseurs de flux et n'altèrent en rien la nature séquentielle de l'archive. Dans le pire des cas, vous aurez besoin d'un peu plus de blocs avant de pouvoir commencer à extraire.
Cette différence peut sembler insignifiante, mais elle représente en fait un opposé polaire dans la philosophie. Avec les archives zip, il est toujours nécessaire d'avoir le fichier entier à portée de main pour faire quoi que ce soit d'utile avec lui, alors qu'une archive tar peut être transmise en continu à un pipeline. Je peux télécharger une grosse archive tar et commencer à l'extraire dès le début, dès que les premiers blocs arrivent (et éventuellement interrompre le téléchargement dès que j'obtiens le fichier que je cherche). Pour une archive Zip, je dois attendre l'apparition du répertoire d'archivage, qui se trouve à la toute fin de l'archive. Mais une fois que j'ai hacer avoir le fichier entier à portée de main, l'extraction d'une partie de son contenu sera beaucoup plus rapide à partir d'un fichier tar.
Les deux formats ont un point fort, selon le lieu et la manière dont ils sont utilisés. Étant donné que les pipelines (et donc la notion de flux de données d'un processus à un autre) n'existent réellement que dans le monde Unix, le principal avantage des archives tar est perdu sur les autres systèmes, c'est pourquoi les archives Zip y sont beaucoup plus populaires. Mais les archives tar sont plus flexibles, c'est pourquoi je les préfère quand j'ai le choix.