Le format d’archivage tar est, dans les années informatiques, un véritable Mathusalem mais il est encore largement utilisé aujourd’hui. Qu’est-ce qui rend le format tar si utile longtemps après sa création?
Le lecteur SuperUser MarcusJ est curieux de connaître le format tar et pourquoi nous l’utilisons toujours après toutes ces années:
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?
Allquixotic, contributeur SuperUser, offre un aperçu de la longévité et des fonctionnalités du format tar:
Partie 1: Performance
Voici une comparaison de deux flux de travail distincts et de ce qu’ils font.
Vous avez un fichier sur le disque blah.tar.gz
soit, par exemple, 1 Go de données compressées gzip qui, une fois non compressées, occupent 2 Go (donc un taux de compression de 50%).
La façon dont vous créeriez ceci, si vous deviez faire l’archivage et la compression séparément, serait:
tar cf blah.tar files ...
Cela entraînerait blah.tar
qui est une simple agrégation des files ...
sous forme non compressée.
Alors tu ferais
gzip blah.tar
Cela lirait le contenu de blah.tar
à partir du disque, compressez-les via l’algorithme de compression gzip, écrivez le contenu dans blah.tar.gz
, puis dissociez (supprimez) le fichier blah.tar
.
Maintenant, décompressons!
Voie 1
Vous avez 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 des données compressées de 1 Go
blah.tar.gz
. - TRAITEZ les données compressées via le
gzip
décompresseur en mémoire. - Lorsque la mémoire tampon se remplit d’un «bloc» de données, ÉCRIVEZ les données non compressées dans le fichier
blah.tar
sur le disque et répétez 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, qui n’est pas compressé mais contient un ou plusieurs fichiers, avec une surcharge de structure de données très faible. La taille du fichier est probablement supérieure à 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ées
blah.tar
et letar
les structures de données du format de fichier, y compris les informations sur les autorisations de fichier, les noms de fichier, les répertoires, etc. - ECRIVEZ sur le disque les 2 Go de données plus les métadonnées. Cela implique: la traduction de la structure de données / des informations de métadonnées en créant de nouveaux fichiers et répertoires sur le disque, le cas échéant, ou la réécriture de fichiers et répertoires existants avec un nouveau contenu de données.
Le total des données que nous LIS à partir du disque dans ce processus était de 1 Go (pour gunzip) + 2 Go (pour tar) = 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 tar) + quelques octets pour les métadonnées = environ 4 Go.
Voie 2
Vous avez 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 des données compressées de 1 Go
blah.tar.gz
, un bloc à la fois, en mémoire. - TRAITEZ les données compressées via le
gzip
décompresseur en mémoire. - Lorsque la mémoire tampon se remplit, elle tuyau ces données, en mémoire, jusqu’aux
tar
analyseur de format de fichier, qui lira les informations sur les métadonnées, etc. et les données de fichier non compressées. - Au fur et à mesure que la mémoire tampon se remplit,
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 à partir du disque dans ce processus était de 1 Go de données compressées, point final.
Le total des données que nous A ÉCRIT sur le disque dans ce processus était de 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 disque en Voie 2 est aux E / S disque effectuées par, disons, le Zip
ou7-Zip
programmes, en ajustant les différences de taux de compression.
Et si le taux de compression est votre préoccupation, utilisez le Xz
compresseur à encapsuler tar
, et vous avez l’archive TAR de LZMA2, qui est tout 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 est très bien connu et testé pour emballer avec succès un répertoire avec toutes sortes d’autorisations différentes, de liens symboliques, etc. Il y a plus que quelques cas où l’on pourrait avoir besoin de regrouper un tas de fichiers dans un seul fichier ou flux, mais pas nécessairement le compresser (bien que la compression soit utile et souvent utilisée).
Partie 3: Compatibilité
De nombreux outils sont distribués sous forme source ou binaire comme .tar.gz ou .tar.bz2 car il s’agit d’un format de fichier au «plus petit dénominateur commun»: tout comme la plupart des utilisateurs de 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 au goudron et au gunzip, peu importe leur âge ou leur réduction. Même les firmwares Android ont accès à ces outils.
Les nouveaux projets ciblant des publics exécutant des distributions modernes peuvent très bien être distribués dans un format plus moderne, tel que .tar.xz (en utilisant le format de compression Xz (LZMA), qui compresse mieux que gzip ou bzip2), ou .7z, qui est similaire à les formats de fichier Zip ou Rar dans la mesure où il compresse et spécifie à la fois une disposition pour encapsuler plusieurs fichiers dans un seul fichier.
Vous ne voyez pas .7z 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 la vidéo dans WebM. Compatibilité avec les personnes exécutant des systèmes anciens ou très basiques.
Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.