21Aug
Le format d'archivage tar est, dans les années de calcul, un véritable Methuselah mais il est encore largement utilisé aujourd'hui. Qu'est-ce qui rend le format de tar si utile longtemps après sa création?
Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.
La question lecteur
SuperUser MarcusJ est curieux au sujet du format tar et pourquoi nous l'utilisons encore après toutes ces années:
Je sais que tar a été fait pour les archives de bande dans la journée, mais aujourd'hui nous avons des formats de fichiers d'archivesagréger les fichiers et effectuer la compression dans le même format de fichier logique.
Questions:
- Existe-t-il une pénalité de performance lors de l'agrégation des étapes de décompression /compression/ pour l'utilisation de tar encapsulé dans gzip ou bzip2, comparé à l'utilisation d'un format de fichier qui agrège et compresse dans la même structure de données? Supposons que le temps d'exécution du compresseur comparé soit identique( par exemple, gzip et Deflate sont similaires).
- Existe-t-il des fonctionnalités du format de fichier tar que les autres formats de fichiers, tels que. 7z et. zip, n'ont pas?
- Depuis tar est un vieux format de fichier, et de nouveaux formats de fichiers existent aujourd'hui, pourquoi tar( encapsulé dans gzip, bzip2 ou même le nouveau xz) est encore largement utilisé aujourd'hui sur GNU / Linux, Android, BSD, et autresSystèmes d'exploitation UNIX, pour les transferts de fichiers, la source de programmes et les téléchargements binaires, 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 encore le format tar. C'est quoi l'histoire?
La réponse
SuperUser contributeur Allquixotic offre un aperçu de la longévité et la fonctionnalité du format tar:
Partie 1: Performance
Voici une comparaison de deux flux de travail distincts et ce qu'ils font.
Vous avez un fichier sur le disque blah.tar.gz qui est, disons, 1 Go de données compressées par gzip qui, lorsqu'il n'est pas compressé, occupe 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 fichiers blah.tar. ..Cela se traduirait par blah.tar qui est une simple agrégation des fichiers. .sous forme non compressée.
Ensuite, vous feriez
gzip blah.tarCela lirait le contenu de blah.tar à partir du disque, les compresser à travers l'algorithme de compression gzip, écrire le contenu à blah.tar.gz, puis dissocier( supprimer) le fichier blah.le goudron.
Maintenant, décompressons!
Way 1
Vous avez blah.tar.gz, d'une manière ou d'une autre.
Vous décidez d'exécuter:
gunzip blah.tar.gzCela
- LIRE le contenu de données compressées 1GB de blah.tar.gz.
- TRAITE les données compressées via le décompresseur gzip en mémoire.
- Au fur et à mesure que la mémoire tampon se remplit d'un bloc de données, ECRIVEZ les données non compressées dans le fichier fileblah.tar sur le disque et répétez jusqu'à ce que toutes les données compressées soient lues.
- Dissocie( supprime) le fichier blah.tar.gz.
Maintenant, vous avez blah.tar sur le disque, qui n'est pas compressé mais qui contient un ou plusieurs fichiers, avec une surcharge de structure de données très faible. La taille du fichier est probablement de quelques octets plus grand que la somme de toutes les données de fichier serait.
Vous exécutez:
tar xvf blah.tar
- lira les 2 Go de contenu de données non compressé de blah.tar et les structures de données du format de fichier tar, y compris des informations sur les autorisations de fichiers, les noms de fichiers, les répertoires, etc.
- WRITE sur disqueles 2 Go de données plus les métadonnées. Cela implique: de traduire les informations de structure de données / métadonnées en créant de nouveaux fichiers et répertoires sur le disque selon le cas, ou en réécrivant des fichiers et des répertoires existants avec de nouveaux contenus de données.
Les données totales que nous LIRE du disque dans ce processus était 1GB( pour gunzip) + 2GB( pour tar) = 3GB.
Le total des données que nous WRIT 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.
Way 2
Vous avez blah.tar.gz, d'une manière ou d'une autre.
Vous décidez d'exécuter:
tar xvzf blah.tar.gz
- lira le contenu des données compressées de 1 Go de blah.tar.gz, un bloc à la fois, en mémoire.
- TRAITE les données compressées via le décompresseur gzip en mémoire.
- Comme la mémoire tampon se remplit, va diriger cette donnée, en mémoire, à travers l'analyseur de format de fichier tar, qui lira les informations sur les métadonnées, etc. et les données non compressées.
- Au fur et à mesure que la mémoire tampon se remplit dans l'analyseur de fichier tar, il ECRIVE 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 READ à partir du disque dans ce processus était de 1 Go de données compressées, période.
Les données totales que nous WROTE 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 de disque dans Way 2 est identique à l'E / S du disque effectuée, par exemple, les programmes Zip ou 7-Zip, en ajustant les différences de taux de compression.
Et si le taux de compression est votre préoccupation, utilisez le compresseur Xz pour encapsuler tar, et vous avez LZMA2'ed TAR archive, qui est tout aussi efficace que l'algorithme le plus avancé disponible à 7-Zip: -)
Partie 2: Fonctions
tar stocke les permissions UNIX dans ses métadonnées de fichiers, et est très bien connu et testé pour emballer avec succès un répertoire avec toutes sortes d'autorisations différentes, des liens symboliques, etc. Il y a plus d'un cas où il faut agréger un tas de fichiersdans 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 la forme source ou binaire sous la forme. tar.gz ou. tar.bz2 car il s'agit d'un format de fichier "plus petit dénominateur commun": tout comme la plupart des utilisateurs Windows ont accès à. zip ou. rarLes décompresseurs, la plupart des installations Linux, même les plus basiques, auront au moins accès à tar et gunzip, peu importe leur âge ou leur taille. Même les firmwares Android ont accès à ces outils.
De nouveaux projets ciblant des publics exécutant des distributions modernes peuvent très bien distribuer 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 similaireaux formats de fichier Zip ou Rar en ce qu'il compresse et spécifie 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 à partir des magasins de téléchargement en ligne dans des formats flambant neufs comme Opus, ou vidéo dans WebM.Compatibilité avec les personnes exécutant des systèmes anciens ou très basiques.
Vous avez quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.