/ / Quel est l'avantage d'utiliser le format de fichier Tar aujourd'hui?

Quel est l'avantage d'utiliser le format de fichier Tar aujourd'hui?


Le format d'archivage de tar est, dans les années de calcul, un véritable Mathusalem, mais il est encore très utilisé aujourd'hui. Qu'est-ce qui rend le format tar si utile longtemps après sa création?

La séance de questions et réponses d’aujourd’hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté.

La question

Le lecteur de SuperUser, MarcusJ, s’interroge sur le format tar et les raisons pour lesquelles nous l’utilisons encore après toutes ces années:

Je sais que tar a été créé pour les archives sur bande à l’époque, mais nous avons aujourd’hui des formats de fichier d’archive qui agrègent les fichiers et effectuent une compression dans le même format de fichier logique.

Des questions:

  • Y a-t-il une pénalité de performance pendant lales étapes d'agrégation / compression / décompression pour l'utilisation de tar encapsulées dans gzip ou bzip2, par rapport à l'utilisation d'un format de fichier qui effectue l'agrégation et la compression dans la même structure de données? Supposons que le temps de fonctionnement du compresseur comparé soit identique (par exemple, gzip et Deflate sont similaires).
  • Existe-t-il des fonctionnalités du format de fichier tar que n’ont pas les autres formats de fichier, tels que .7z et .zip?
  • Comme tar est un ancien format de fichier, et plus récentIl existe aujourd'hui des formats de fichiers. Pourquoi tar (encore encapsulé dans gzip, bzip2 ou même le nouveau xz) est-il encore si largement utilisé aujourd'hui sur GNU / Linux, Android, BSD et autres systèmes d'exploitation UNIX, pour le transfert de fichiers, la source de programme et les fichiers binaires téléchargements, et parfois même en tant que format de gestionnaire de paquets?

C’est une question parfaitement raisonnable; Tant de choses ont changé dans le monde informatique au cours des trente dernières années, mais nous utilisons toujours le format tar. C'est quoi l'histoire?

La réponse

Allquixotic, contributeur de SuperUser, donne un aperçu de la longévité et des fonctionnalités du format tar:

Partie 1: Performance

Voici une comparaison de deux workflows distincts et de ce qu’ils font.

Vous avez un fichier sur le disque blah.tar.gz ce qui correspond, par exemple, à 1 Go de données compressées par gzip qui, lorsqu'elles sont décompressées, occupent 2 Go (soit un taux de compression de 50%).

La manière dont vous créeriez ceci, si vous archiviez et compressiez séparément, serait la suivante:

tar cf blah.tar files ...

Cela se traduirait par blah.tar qui est une simple agrégation de la files ... sous forme non compressée.

Alors tu ferais

gzip blah.tar

Cela lirait le contenu de blah.tar depuis le disque, compressez-les via l'algorithme de compression gzip, écrivez le contenu sur blah.tar.gz, puis dissociez (supprimez) le fichier blah.tar.

Maintenant, décompressons!

Voie 1

Tu as blah.tar.gz, D'une façon ou d'une autre.

Vous décidez de courir:

gunzip blah.tar.gz

Cette volonté

  • LISEZ le contenu compressé de 1 Go de blah.tar.gz.
  • TRAITER les données compressées à travers le gzip décompresseur en mémoire.
  • Lorsque la mémoire tampon se remplit avec «un bloc» de données, ÉCRIVEZ les données non compressées dans le fichier.blah.tar sur le disque et répéter jusqu'à ce que toutes les données compressées soient lues.
  • Dissocier (supprimer) le fichier blah.tar.gz.

Maintenant vous avez blah.tar sur le disque, non compressé mais contenant un ou plusieurs fichiers, avec une surcharge de structure de données très faible. La taille du fichier est probablement quelques octets plus grande que la somme de toutes les données du fichier.

Vous courez:

tar xvf blah.tar

Cette volonté

  • LISEZ les 2 Go de contenu de données non compressé de blah.tar et le tar structures de données du format de fichier, y compris des informations sur les autorisations de fichier, les noms de fichier, les répertoires, etc.
  • ECRIVEZ sur disque les 2 Go de données plus les métadonnées. Cela implique: la traduction des informations de structure de données / métadonnées en création de nouveaux fichiers et répertoires sur le disque, le cas échéant, ou la réécriture de fichiers et de répertoires existants avec un nouveau contenu de données.

Le total des données que nous LIS du disque dans ce processus était de 1 Go (pour gunzip) + 2 Go (pour le goudron) = 3 Go.

Le total des données que nous A ÉCRIT sur le disque dans ce processus était de 2 Go (pour gunzip) + 2 Go (pour les fichiers tar) + quelques octets pour les métadonnées = environ 4 Go.

Voie 2

Tu as blah.tar.gz, D'une façon ou d'une autre.

Vous décidez de courir:

tar xvzf blah.tar.gz

Cette volonté

  • LISEZ le contenu compressé de 1 Go de blah.tar.gz, un bloc à la fois, en mémoire.
  • TRAITER les données compressées à travers le gzip décompresseur en mémoire.
  • Au fur et à mesure que la mémoire tampon se remplit, tuyau ces données, en mémoire, à travers le tar analyseur de format de fichier, qui lira les informations sur les métadonnées, etc., ainsi que les données de fichier non compressées.
  • Comme la mémoire tampon se remplit dans le tar analyseur de fichiers, il écrit les données non compressées sur le disque en créant des fichiers et des répertoires et en les remplissant avec le contenu non compressé.

Le total des données que nous LIS du disque dans ce processus était 1 Go de données compressées, période.

Le total des données que nous A ÉCRIT sur le disque dans ce processus était 2 Go de données non compressées + quelques octets pour les métadonnées = environ 2 Go.

Si vous remarquez, la quantité d'E / S de disque dans Voie 2 est identique au disque I / O effectué par, par exemple, le Zip ou7-Zip programmes, en tenant compte des différences de taux de compression.

Et si le taux de compression vous préoccupe, utilisez le Xz compresseur à encapsuler taret vous avez l'archive TAR de LZMA2, qui est aussi efficace que l'algorithme le plus avancé disponible pour 7-Zip :-)

Partie 2: Caractéristiques

tar stocke les autorisations UNIX dans ses métadonnées de fichier,et il est très bien connu et testé pour compacter avec succès un répertoire avec toutes sortes d'autorisations différentes, de liens symboliques, etc. nécessairement le compresser (bien que la compression soit utile et souvent utilisée).

Partie 3: Compatibilité

De nombreux outils sont distribués en source ou en binairesous la forme .tar.gz ou .tar.bz2 car il s’agit d’un format de fichier «plus petit dénominateur commun»: un peu comme la plupart des utilisateurs Windows ont accès aux décompresseurs .zip ou .rar, la plupart des installations Linux, même les plus élémentaires, auront accès à au moins goudron et gunzip, peu importe leur âge ou leur réduction. Même les firmwares Android ont accès à ces outils.

Nouveaux projets ciblant des publics modernesles distributions peuvent très bien être distribuées dans un format plus moderne, tel que .tar.xz (utilisant le format de compression Xz (LZMA), qui compresse mieux que gzip ou bzip2), ou .7z, similaire aux formats de fichier Zip ou Rar en ce sens qu'il compresse et spécifie une structure pour encapsuler plusieurs fichiers dans un seul fichier.

Vous ne voyez pas.7z est utilisé plus souvent pour la même raison que la musique n’est pas vendue dans les magasins de téléchargement en ligne dans de nouveaux formats comme Opus, ou que la vidéo dans WebM. Compatibilité avec les utilisateurs de systèmes anciens ou très basiques.


Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.