Il semble y avoir une certaine réticence à répondre directement à toutes vos questions, avec une préférence apparente pour utiliser votre question comme un point de départ pour la pontification. Je vais donc tenter le coup.
Y a-t-il une pénalité de performance pendant la d'agrégation/compression/décompression pour l'utilisation de tar encapsulé 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 d'exécution du compresseur comparé soit identique (par ex. gzip et Deflate sont similaires).
Non. En fait, comme tar et gzip sont généralement deux processus, vous bénéficiez même d'un petit avantage en termes de vitesse multi-cœur qu'un archiveur comme zip d'Info-ZIP ne fournit pas. En termes de taux de compression, tar+gzip sera généralement nettement meilleur que zip avec deflate, car le premier peut bénéficier de la corrélation entre les fichiers, alors que le second compresse les fichiers séparément. Cet avantage de compression se traduit par un avantage de vitesse lors de l'extraction, puisqu'une archive plus comprimée se décompresse en moins de temps.
Le format de fichier tar présente-t-il des caractéristiques que d'autres formats de fichier, tels que .7z et .zip, n'ont pas ?
Oui, tar a été conçu pour Unix, et a évolué au fil des ans pour être capable d'enregistrer et de restaurer exactement chaque petit recoin des systèmes de fichiers Unix, même le système de fichiers Unix de Mac OS X, plus bizarre et plus grincheux. zip est capable de conserver une grande partie des métadonnées telles que les permissions, les heures, les propriétaires, les groupes et les liens symboliques, mais pas tout. Par exemple, ni zip ni 7z ne peuvent reconnaître ou tirer profit des fichiers épars, et ils ne sont pas non plus conscients ou capables de restaurer les liens symboliques.
Étant donné que tar est un format de fichier très ancien et qu'il existe des formats de fichier plus récents aujourd'hui, pourquoi tar (qu'il soit encapsulé dans gzip, bzip2 ou même le nouveau format xz) est-il encore si largement utilisé aujourd'hui sur GNU/Linux, Android, BSD, et d'autres systèmes d'exploitation UNIX de ce type, pour les transferts de fichiers, les sources de programmes, etc. systèmes d'exploitation UNIX, pour le transfert de fichiers, le téléchargement des sources et des binaires de programmes, et parfois même comme format de gestionnaire de paquets ?
Il y a beaucoup d'autres bonnes réponses à cela ici. La meilleure est que il fonctionne tout simplement et vous pouvez continuer à le mettre à jour vers de meilleurs formats de compression (par exemple xz) tout en utilisant le même format tar et même le même utilitaire tar compilé. Si vous voulez juste emballer un tas de choses, et tout déballer à l'autre bout, il n'y a guère de raison d'utiliser autre chose que l'un des logiciels les plus anciens, les plus complets et les plus débogués qui existent.
Si vous voulez un accès aléatoire, des mises à jour partielles ou d'autres choses qui nécessitent de traiter le contenu de manière fragmentaire, ou si vous voulez être en mesure de savoir ce qu'il contient sans avoir à le lire en entier, vous devez alors utiliser un format différent.
2 votes
C'est une très bonne question. Moi aussi, je n'aime pas du tout leur façon d'installer des logiciels qui ont des noms bizarres ou que je ne peux pas simplement installer avec apt-get. La seule raison pour laquelle je pense que la question sera rejetée est qu'il s'agit plutôt d'une question pour Unix/Linux. Mais SU devrait l'accepter.
3 votes
@Griffin : La question ne porte pas sur l'installation de logiciels à partir de tarballs. Elle concerne l'utilisation du format Tar (par exemple, par rapport à Zip ou RAR).
34 votes
Je ne suis pas d'accord pour dire que cela "fait perdre du temps". Si vous parlez de performances, il n'y a pas de pénalité de performance réelle pour le tar car le format est très efficace. Si vous voulez dire qu'il y a une perte de temps votre temps, je ne vois pas comment
tar xvzf
est plus difficile que7z -x
...0 votes
Allquixotic, je veux dire que vous devez extraire l'archive deux fois, la première fois pour extraire le tar, et la seconde pour extraire du tar.
45 votes
Il semble déplorer le fait que tar ne stocke pas un catalogue au départ, ce qui fait que les outils de compression gui qui veulent lister le contenu avant l'extraction doivent décompresser tout le tar juste pour lister le contenu, puis le décompresser à nouveau lors de l'extraction.
1 votes
@MarcusJ En général, les formats tar.xx ont une solution en une ligne. Si vous avez tar.gz, par exemple, vous pouvez utiliser
tar -xzf <file>.tar.gz
et il décompressera et extraira tout en même temps.4 votes
Psusi, non non non, je parle du fait que tar a besoin d'un compresseur et d'un décompresseur séparés, donc en fait quand vous ouvrez un tar.gz, vous devez extraire LES DEUX fichiers gz pour obtenir le tar, puis vous devez extraire le fichier tar, au lieu de simplement décompresser quelque chose comme un 7z - en une seule étape. Il faut plus de puissance de calcul pour faire cela, et cela semble redondant.
4 votes
@MarcusJ, les deux étapes doivent être effectuées dans les deux sens, donc cela ne demande pas plus de puissance de calcul.
2 votes
Je ne veux pas dire que vous avez tort ou quoi que ce soit, mais comment un 7z pourrait-il nécessiter les deux étapes ? Il chargerait simplement le fichier, puis décompresserait ce qui a été sélectionné pour être décompressé. :/
10 votes
@MarcusJ : vous pensez que 7z sait par magie où commence chaque fichier dans une archive ? De plus, les algorithmes de compression habituels (gzip, bzip2) fonctionnent avec le streaming du contenu : pas besoin de compléter à 100% la première étape avant la suivante.
3 votes
Quelle étape pensez-vous qu'il n'a pas à faire ? Il doit analyser le format du fichier, et il doit décompresser le contenu. La différence réside dans l'ordre dans lequel les deux étapes sont effectuées.
tar
décompresse d'abord le contenu, puis analyse l'archive.7zip
analyse l'archive, puis décompresse le contenu du fichier (les métadonnées ne sont pas compressées).11 votes
De plus, @MarcusJ, vous semblez confondre deux choses différentes : quand vous faites
tar xvzf
les données non comprimées n'est pas écrit sur le disque dur en.tar
format ! Vous avez raison de dire que si vous exécutezgunzip blah.tar.gz
et ensuitetar xf blah.tar
En effet, les données seraient écrites deux fois sur le disque (une fois sous forme de .tar et une autre fois sous forme de fichiers dans le système de fichiers), mais personne ne procède de cette manière. Le sitetar xzf
utilise un Pipe UNIX (essentiellement une copie de mémoire) pour transférer les données non compressées degzip
(ou tout autre compresseur) àtar
donc les données sont no écrit sur le disque dans.tar
format.1 votes
@grawity Je comprends cela. J'essayais simplement de lui assurer qu'il ne serait pas rétrogradé. A en juger par la réponse, je ne pense pas qu'il en ait encore trop peur.
15 votes
Une chose que je sais, c'est que
tar
(surtout compressé) se comporte terriblement bien lorsqu'il s'agit de corruption de données. Les petites données de redondance / récupération ajoutées par les formats modernes valent de l'or.1 votes
tar
est supérieur pour le streaming. Contrairement àzip
vous ne devez pas attendre l'annuaire central. Pour l'archivage, cela peut aussi être un inconvénient (plus lent à lister le contenu).tar xvzf
utilisera aussi automatiquement deux processus/cores, il n'est donc pas inefficace de séparer les deux processus.5 votes
@PPC : c'est à cela que servent les fichiers PAR. Tar est un utilitaire unix ; en tant que tel, la correction des erreurs est mieux laissée aux outils dédiés.
1 votes
Hmm, tar garde les liens mous. Je me souviens qu'à l'époque : "tar cf - | ( cd /quelque part/else ; tar xf -)" assez souvent parce que "cp" n'avait pas de drapeau pour respecter les soft links. Je ne sais pas si c'est le cas aujourd'hui - si je rencontrais ce problème, j'utiliserais probablement à nouveau 'tar' de cette façon.
1 votes
Pourquoi utiliser une seule commande quand deux suffisent ?
1 votes
@Kruug : GNU tar applique automatiquement le
z
(ouj
ouJ
) :tar xf foo.tar.gz
. Il le fait en se basant sur le contenu réel du fichier, et non sur son nom, de sorte que cela fonctionne même si un fichier tar gzippé est nomméfoo.tar
.0 votes
Cependant, si vous voulez extraire un seul fichier, AFAIK tar doit d'abord décompresser l'archive entière, alors qu'un autre format pourrait seulement décompresser le fichier cible.