Je sais que tar
a été créé pour les archives sur bande à l'époque, mais nous disposons aujourd'hui de formats de fichiers d'archives qui regroupent les fichiers et effectuent une compression dans le même format de fichier logique.
Des questions:
Existe-t-il une perte de performance lors des étapes 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 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 les autres formats de fichier, tels que .7z
et .Zip
, n’ont pas?
Puisque tar
est un format de fichier aussi ancien et qu'il existe de nouveaux formats de fichier, pourquoi tar
(qu'il soit encapsulé dans gzip
, bzip2
ou même le nouveau xz
) est encore si largement utilisé aujourd'hui sur GNU/Linux, Android, BSD et autres, UNIX systèmes d’exploitation, pour les transferts de fichiers, les sources de programmes et les téléchargements binaires, et parfois même en tant que format de gestionnaire de paquets?
Voici une comparaison de deux workflows distincts et de ce qu’ils font.
Vous avez un fichier sur le disque blah.tar.gz
qui correspond, par exemple, à 1 Go de données compressées au format gzip et qui occupent 2 Go (non compressées) (donc 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 donnerait blah.tar
qui est une simple agrégation de files ...
sous forme non compressée.
Alors tu ferais
gzip blah.tar
Cela permettrait de lire le contenu de blah.tar
à partir du disque, de le compresser via l'algorithme de compression gzip, d'écrire le contenu dans blah.tar.gz
, puis de supprimer (lier) le fichier blah.tar
.
Maintenant, décompressons!
Vous avez blah.tar.gz
, d'une manière ou d'une autre.
Vous décidez de courir:
gunzip blah.tar.gz
Cette volonté
blah.tar.gz
.gzip
en mémoire.blah.tar
sur le disque et répétez l'opération jusqu'à ce que toutes les données compressées soient lues.blah.tar.gz
.Maintenant, vous avez blah.tar
sur le disque, qui est décompressé mais 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 supérieure à la somme de toutes les données du fichier.
Vous courez:
tar xvf blah.tar
Cette volonté
blah.tar
et les structures de données du format de fichier tar
, y compris des informations sur les autorisations de fichier, les noms de fichier, les répertoires, etc.Le total des données que nous AVONS LUES à partir du disque au cours de ce processus était de 1 Go (pour gunzip) + 2 Go (pour les fichiers tar) = 3 Go.
Le total des données que nous AVONS ÉCRITES sur le disque au cours de ce processus était de 2 Go (pour gunzip) + 2 Go (pour les archives tar) + quelques octets pour les métadonnées = environ 4 Go.
Vous avez blah.tar.gz
, d'une manière ou d'une autre.
Vous décidez de courir:
tar xvzf blah.tar.gz
Cette volonté
blah.tar.gz
, un bloc à la fois.gzip
en mémoire.tar
, qui lit les informations sur les métadonnées, etc., ainsi que les données de fichier non compressées.tar
, 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 AVONS LUES à partir du disque au cours de ce processus était de 1 Go de données compressées, point à point.
Le total des données que nous AVONS ÉCRITES sur le disque au cours de 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 égale à identique par rapport à l'E/S de disque effectuée par, par exemple, la Zip
ou 7-Zip programmes, en ajustant pour toute différence de taux de compression.
Et si le taux de compression vous préoccupe, utilisez le compresseur Xz
pour encapsuler tar
et vous aurez LZMA2'ed TAR archive, qui est aussi efficace que l’algorithme le plus avancé disponible pour 7-Zip :-)
tar
stocke les autorisations Unix dans ses métadonnées de fichier. Il est très bien connu et testé pour compacter avec succès un répertoire avec toutes sortes d'autorisations différentes, des liens symboliques, etc. Il existe plus d'un cas où il peut être nécessaire de parcourir plusieurs fichiers dans un seul fichier ou flux, mais pas nécessairement le compresser (bien que la compression soit utile et souvent utilisée).
De nombreux outils sont distribués sous forme binaire ou source sous les formats .tar.gz ou .tar.bz2, car il s’agit d’un format de fichier "plus petit dénominateur commun": 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 au moins accès à tar et à gunzip, quel que soit leur âge ou leur finesse. Même les firmwares Android ont accès à ces outils.
Les nouveaux projets ciblant des publics utilisant des distributions modernes peuvent très bien être distribués 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 à les formats de fichier Zip ou RAR dans le sens où il compresse et spécifie une présentation pour encapsuler plusieurs fichiers dans un seul fichier.
Vous ne voyez pas que .7z soit utilisé plus souvent pour la même raison que la musique ne soit pas vendue dans les magasins de téléchargement en ligne dans de nouveaux formats tels que Opus , ou la vidéo dans WebM . Compatibilité avec les utilisateurs de systèmes anciens ou très basiques.
On a répondu à cette Stack Overflow .
bzip et gzip fonctionnent sur des fichiers uniques, pas sur des groupes de fichiers. Plain old Zip (et pkzip) fonctionnent sur des groupes de fichiers et intègrent le concept d'archive.
La philosophie * nix est constituée de petits outils qui effectuent très bien des tâches spécifiques et peuvent être enchaînés. C'est pourquoi deux outils ici ont des tâches spécifiques et sont conçus pour s'intégrer parfaitement. Cela signifie également que vous pouvez utiliser tar pour regrouper des fichiers, puis vous avez le choix d'un outil de compression (bzip, gzip, etc.).
De nombreux outils sont distribués sous forme binaire ou source sous les formats .tar.gz ou .tar.bz2, car il s’agit d’un format de fichier "plus petit dénominateur commun": 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 tar
et gunzip
, quel que soit leur âge ou leur réduction. Même les firmwares Android ont accès à ces outils.
Les nouveaux projets ciblant des publics utilisant des distributions modernes peuvent très bien être distribués 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, qui est similaire aux formats de fichier Zip ou RAR en ce sens qu'il compresse et spécifie une présentation pour encapsuler plusieurs fichiers dans un seul fichier.
Vous ne voyez pas que .7z soit utilisé plus souvent pour la même raison que la musique ne soit pas vendue dans les magasins de téléchargement en ligne dans de nouveaux formats tels que Opus , ou la vidéo dans WebM . La compatibilité avec les utilisateurs de systèmes anciens ou très basiques est importante.
Tar dispose d'un riche ensemble d'opérations et de modificateurs qui connaissent tout des systèmes de fichiers Unix. Il connaît les permissions Unix, les différents moments associés aux fichiers, les liens physiques, les liens symboliques (et la possibilité que des liens symboliques introduisent des cycles dans le graphe du système de fichiers), et vous permet de spécifier plusieurs manières différentes de gérer toutes ces données. .
Voulez-vous que les données extraites préservent les temps d'accès aux fichiers? Tar peut le faire. Pour conserver les autorisations? Tar peut le faire.
Voulez-vous conserver les liens symboliques en tant que liens symboliques? Tar le fait par défaut. Voulez-vous copier la cible à la place? Tar peut le faire.
Voulez-vous être sûr que les données liées en dur ne sont stockées qu’une fois (c’est-à-dire que vous devez agir correctement)? Tar fait ça.
Voulez-vous gérer correctement les fichiers fragmentés? Tar peut le faire.
Voulez-vous des données non compressées (pourquoi?)? Tar peut le faire. Compresser avec gzip? Tar peut le faire. Avec bzip2? Tar peut le faire. Avec des programmes de compression externes arbitraires? Tar peut le faire.
Voulez-vous écrire ou récupérer sur un périphérique brut? Le format de Tar gère cela bien.
Voulez-vous ajouter des fichiers à une archive existante? Tar peut le faire. Diff deux archives pour voir ce qui a changé? Tar peut le faire. Pour mettre à jour uniquement les parties de l'archive qui ont changé? Tar peut le faire.
Voulez-vous être sûr de ne pas archiver sur plusieurs systèmes de fichiers? Tar peut le faire.
Voulez-vous récupérer uniquement les fichiers plus récents que votre dernière sauvegarde? Tar peut le faire.
Voulez-vous conserver les noms ou les numéros d'utilisateurs et de groupes? Tar peut faire l'un ou l'autre.
Avez-vous besoin de conserver les nœuds de périphérique (tels que les fichiers dans /dev
) afin qu'après le extraction, le système fonctionne correctement? Tar peut le faire.
Tar évolue depuis des décennies pour gérer de nombreux cas d'utilisation et en sait vraiment beaucoup sur ce que les utilisateurs veulent faire avec les systèmes de fichiers Unix.
Vous confondez les deux processus distincts de archivage et compression.
Raisons pour utiliser un archiveur
Une des raisons d'utiliser l'archivage sans compression est, par exemple, si un groupe de fichiers est copié d'un hôte à un autre. Une commande comme celle-ci
tar cf - some_directory | ssh Host "(cd ~/somewhere | tar xf -)"
peut considérablement accélérer les choses. Si je sais que les fichiers ne peuvent pas être compressés ou si SSH est configuré avec la compression, vous pouvez économiser un temps processeur considérable. Bien sûr, on peut utiliser un outil de compression plus moderne doté d'une fonction d'archivage et désactiver la compression. L’avantage de tar
est que je peux s’attendre à ce qu’il soit disponible sur tous les systèmes.
Raisons pour utiliser un archiveur avec compression gzip
Une des raisons pour lesquelles j'utilise tar
avec gzip
est la suivante: rapidité! Si je veux transférer quelques GiB de fichiers texte d'un endroit à un autre, je ne me soucie pas d'extraire le derniers octets, car la compression n'est utilisée que pour le transit, pas pour le stockage à long terme. Dans ces cas, j'utilise gzip
, ce qui ne limite pas le processeur (contrairement à 7-Zip , par exemple), ce qui signifie que je suis I/O lié à nouveau et non lié au processeur. . Et encore une fois: gzip
peut être considéré comme disponible partout.
Raisons de l’utilisation de tar
en faveur de scp
, rsync
, etc.
Si vous avez beaucoup de petits fichiers à copier (par exemple, un répertoire de courrier contenant des centaines de milliers de fichiers), cela vaut scp
. rsync
, aussi génial soit-il, pourrait ne pas être disponible partout. De plus, rsync
ne rapporte réellement que si une partie des fichiers - ou une version plus ancienne - est déjà présente sur la destination. Pour la copie initiale, tar
est la plus rapide, avec ou sans compression, en fonction des données réelles.
Ajoutant aux autres bonnes réponses ici, je préfère la combinaison tar
+ gzip|bzip2|xz
principalement parce que ces fichiers compressés sont comme des flux et que vous pouvez les diriger facilement.
J'ai besoin de décompresser un fichier disponible sur Internet. Avec les formats Zip
ou rar
, je dois d'abord le télécharger, puis le décompresser. Avec tar.{gz,bz2,xz}
je peux télécharger et décompresser dans la même étape, sans avoir besoin d'avoir l'archive compressée physiquement sur le disque:
curl -s http://example.com/some_compressed_file.tar.gz | tar zx
Cela ne laissera que les fichiers non compressés sur mon disque et accélérera l'ensemble du processus, car je ne perds pas de temps à télécharger tout le fichier et à la fin du téléchargement, je le décompresse. Au lieu de cela, je le décompresse pendant le téléchargement. Vous ne pouvez pas faire cela avec les fichiers Zip
ou rar
.
Il y a plusieurs raisons de rester avec (GNU) Tar.
Il est:
Si votre problème particulier consiste à "décompresser" une archive avant de pouvoir lire le contenu, vous avez probablement raison. WinRAR et 7-Zip faites-le automatiquement. Cependant, il existe des solutions simples à ce problème, telles que la documentation du contenu d'une archive sous une forme non compressée.
Il semble y avoir une certaine réticence à répondre à toutes vos questions directement, avec une préférence apparente d'utiliser votre question comme point de départ pour la pontification. Alors je vais tenter le coup.
Existe-t-il une perte de performance lors des étapes 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 de fonctionnement du compresseur comparé soit identique (par exemple, gzip et Deflate sont similaires).
Non. En fait, comme tar et gzip sont généralement deux processus, vous obtenez même un avantage en termes de vitesse multicœur qu'un archiveur comme celui d’Info-Zip ne fournit pas. En termes de taux de compression, tar + gzip sera généralement nettement supérieur à Zip avec deflate puisque le premier peut bénéficier de la corrélation entre les fichiers, tandis que le second compresse les fichiers séparément. Cet avantage en termes de compression se traduit par un avantage en termes de vitesse lors de l'extraction, car une archive plus compressée se décompresse en moins de temps.
Existe-t-il des fonctionnalités du format de fichier tar que ne possèdent pas les autres formats de fichier, tels que .7z et .Zip?
Oui, tar a été conçu pour Unix et a évolué au fil des années pour pouvoir enregistrer et restaurer de manière précise tous les petits problèmes étranges des systèmes de fichiers Unix, même les systèmes de fichiers Unix plus sophistiqués et plus mac OS X. Zip est capable de conserver une grande partie des métadonnées telles que les autorisations, les heures, les propriétaires, les groupes et les liens symboliques, mais pas tout. À titre d'exemple, ni Zip ni 7z ne peuvent reconnaître ou tirer parti des fichiers fragmentés, et ils ne sont pas au courant ni ne sont capables de restaurer des liens physiques.
Puisque tar est un ancien format de fichier et que de nouveaux formats de fichiers existent aujourd'hui, pourquoi tar (qu'il soit 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 UNIX systèmes d’exploitation, pour les transferts de fichiers, les sources de programmes et les téléchargements binaires, et parfois même en tant que format de gestionnaire de paquets?
Beaucoup d'autres bonnes réponses à cela. Le mieux est que cela fonctionne simplement , et vous pouvez continuer à le mettre à jour dans 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 simplement emballer un tas d’articles, puis les décompresser à l’autre bout du monde, il n’ya aucune raison d’utiliser autre chose que l’un des logiciels les plus anciens, les plus complets et les plus débogués.
Si vous souhaitez un accès aléatoire, des mises à jour partielles ou tout autre élément nécessitant une gestion fragmentée du contenu, ou si vous souhaitez être en mesure de découvrir le contenu sans lire le contenu dans son intégralité, vous voudrez utiliser un format différent.
La grande différence est l’ordre dans lequel la compression et l’archivage sont effectués. Les archives tar
, peuvent ensuite éventuellement envoyer l’archive à un compresseur, et Zip
construit l’archive et compresse les données du fichier lorsqu’elles sont insérées dans le fichier. archiver. En divisant les données de fichier en petits morceaux et en les compressant séparément, il vous permet d'extraire des fichiers spécifiques ou des parties de fichiers sans avoir à décompresser tout ce qui se trouve dans l'archive. Cela empêche également le compresseur de créer un dictionnaire très volumineux avant son redémarrage. Cela signifie que la compression ira plus vite, mais ne donnera pas un aussi bon rapport que de compresser le tout avec une plus grande taille de dictionnaire.
Vous pouvez le visualiser en pensant à deux fichiers, où les 500 premiers octets du deuxième fichier sont les mêmes que les 500 derniers octets du premier fichier. Avec la méthode Zip
, le compresseur est redémarré pour le deuxième fichier. Par conséquent, il ne se souvient pas que le premier fichier s'est terminé avec les mêmes données. Il ne peut donc pas supprimer les données en double du deuxième fichier.
Il existe de nombreux autres formats qui présentent un certain nombre d'avantages par rapport à tar
. 7-Zip ne stocke pas les autorisations de fichiers Unix, mais dar
le fait, et Zip
de le faire, et les trois stockent un index, ce qui permet une navigation rapide, l'extraction d'un sous-ensemble de fichiers et la mise à jour de fichiers dans l'archive. Ils peuvent également utiliser des processeurs multicœurs pour la compression.
La raison pour laquelle tout le monde utilise toujours tar
est identique à celle pour laquelle tout le monde utilise encore Windows et Flash : les gens n'aiment pas les changements. Sans une raison solide de changer, les gens s'en tiennent à ce qu'ils savent. dar
ne fournit pas un avantage suffisant pour justifier la publication de fichiers dans le format alors que la plupart des gens ont déjà installé tar
et que très peu de personnes connaissent dar
; une simple inertie nous permet donc de conserver l'ancienne norme.
Les formats de fichier tels que .Zip require le logiciel lisent d’abord la fin du fichier, puis un catalogue de noms de fichiers. Inversement, tar stocke ces informations avec le flux compressé.
L'avantage de la méthode tar est que vous pouvez décompresser des données tout en les lisant à partir d'un tuyau non recherché, comme un socket réseau.
L'avantage de la méthode Zip est que, pour un fichier statique sur disque, vous pouvez parcourir le contenu et les métadonnées sans décompresser d'abord l'archive complète.
Les deux ont leurs utilisations, selon ce que vous faites.
Tar a été créé pour faire des sauvegardes de votre système de fichiers en toute fidélité, pas seulement pour le transfert de fichiers. En tant que tel, l'utilitaire tar est l'utilitaire le plus complet pour créer une archive qui conserve tout ce qui est important pour la structure de votre système de fichiers.
Cela inclut toutes les fonctionnalités manquantes dans un ou plusieurs outils concurrents:
Il a également l'option --one-file-system
qui est extrêmement utile lors des sauvegardes.
Chaque fois qu'une nouvelle fonctionnalité est ajoutée aux systèmes de fichiers, le support est d'abord ajouté à tar
(ou même exclusivement). Donc, il continue à être le moyen le plus compatible pour enregistrer des fichiers.
Nous avons beaucoup de fichiers compressés qui circulent aujourd'hui, MP3, JPG, vidéos, fichiers tar.gz, packages JAR, RPM, DEB, etc. Si vous devez regrouper plusieurs de ces éléments dans un seul fichier pour le transfert, il est utile de disposer d'un utilitaire 'tar' qui regroupe uniquement les fichiers sans tenter de les compresser.
Tenter de compresser un fichier compressé consomme non seulement du temps et de l’énergie, mais aboutit souvent à un fichier plus volumineux que le fichier original.
Une autre utilisation consiste à améliorer les taux de compression. Par exemple, si vous «archivez» un ensemble de fichiers journaux, puis gzip le résultat, vous obtiendrez probablement un fichier plus petit que si vous aviez compressé en premier, puis regroupé avec «tar». Et bien sûr, en utilisant tar, vous pouvez choisir n’importe quel algorithme de compression et spécifier des options pour optimiser la compression en fonction de votre cas d’utilisation.
Je trouve que tar 'est très pertinent aujourd'hui et je préfère qu'il utilise Zip. Dans notre bureau, 7-Zip est installé sur tous les utilisateurs de Windows. Pour nous, les fichiers tar sont entièrement compatibles entre plates-formes.
Peut-être devrions-nous nous demander pourquoi ces "nouveaux" formats de fichier, qui effectuent à la fois compression et agrégation (et j'ajouterais un cryptage), n'étaient pas construits sur tar dès le début au lieu d'outils complètement différents.
Si j'ai bien compris, il existe des raisons historiques (liées à l'historique du système d'exploitation, à la "protection" des brevets, à la capacité du vendeur de logiciels à vendre des outils, etc.).
Maintenant, comme l’a souligné une autre réponse, tar n’est pas clairement inférieur à d’autres solutions et peut être meilleur pour d’autres aspects, comme la capacité de travailler sur des flux ou la gestion des droits Unix.
Si vous lisez l'article de Wikipédia sur le goudron vous pouvez voir un autre fait intéressant. L'article reconnaît quelques défauts de tar ... mais ne suggère pas d'utiliser plutôt le format Zip (le format Zip ne résout pas ces problèmes), mais le format DAR.
Je vais finir avec une touche personnelle. Il y a quelques temps, j'ai dû créer un format de fichier pour stocker des données cryptées. Utiliser tar comme base était pratique (d'autres ont fait le même choix, par exemple, tar est le format d'agrégation interne des packages .deb). Il était évident pour moi qu'essayer de compresser les données après le cryptage était totalement inutile, je devais effectuer la compression comme une étape indépendante avant le cryptage et je n'étais pas non plus prêt à utiliser le cryptage Zip (je voulais un cryptage à deux clés avec des clés publique et privée) . L'utilisation de goudron a fonctionné comme une brise.
À mon avis, la raison de still en utilisant tar
aujourd’hui est qu’il s’agit de l’un des cas (probablement rares) où l’approche UNIX le fait parfaitement bien dès le début.
En examinant de plus près les étapes de la création d'archives, j'espère que vous conviendrez que la séparation des tâches se déroule ici La philosophie UNIX à son meilleur:
un outil (tar
pour lui donner un nom ici) spécialisé dans la transformation de any sélection de fichiers, répertoires et liens symboliques, y compris all métadonnées pertinentes telles que les horodatages, les propriétaires et les autorisations en un octet courant.
et juste un autre outil arbitrairement interchangeable (gzip
bz2
xz
pour ne nommer que quelques options) qui transforme le flux d'octets d'entrée any en un autre flux de sortie plus petit (espérons-le).
L'utilisation d'une telle approche offre de nombreux avantages à l'utilisateur ainsi qu'au développeur:
extensibilité Permettant de coupler tar
avec any algorithme de compression déjà existant ou any algorithme de compression restant à développer sans n'ayant rien à modifier le fonctionnement interne de tar
du tout.
Dès que le tout nouvel outil de compression "hyper-Zip-utra" ou Whater est disponible, vous êtes déjà prêt à l'utiliser pour épouser votre nouveau serveur avec toute la puissance de tar
.
stabilité tar
est très utilisé depuis le début des années 80 et a été utilisé sur de nombreux systèmes d'exploitation et machines.
Empêcher la nécessité de réinventer la roue dans la mise en œuvre du stockage de la propriété, des autorisations, des horodatages et autres encore et encore pour tous les le nouvel outil d'archivage permet non seulement d'économiser beaucoup de temps (sinon inutilement consacré) au développement, mais garantit également le même fiabilité pour chaque nouvelle application.
cohérence L'interface utilisateur reste la même tout le temps.
Il n'est pas nécessaire de se rappeler que pour restaurer les autorisations à l'aide de l'outil A, vous devez passer l'option --i-hope-you-rember-this-one
et utiliser l'outil B, vous devez utiliser --this-time-its-another-one
lorsque vous utilisez l'outil C, il s'agit de `--hope-you-didnt-try-with-tool-as-switch .
Alors qu'en utilisant l'outil D, vous l'auriez vraiment mal fait si vous n'aviez pas utilisé --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.
Je suis surpris que personne n'en ait parlé, mais l'une des raisons - pas vraiment un avantage, mais une nécessité - est liée à la compatibilité ascendante. Pendant des décennies, de nombreux systèmes exécutant des logiciels pourraient appeler tar
pour l'archivage. Il n'est pas rentable d'engager quelqu'un pour "réparer" tous les anciens systèmes.
La raison est "enracinée dans la culture". Il y a de nombreuses personnes comme moi dont les yeux brillent lorsqu'on leur demande de traiter autre chose qu'une archive compressée, ou le fichier Zip occasionnel, s'il provenait du monde Windows.
Je ne veux pas entendre parler de 7-Zip, RAR ou autre chose. Si je dois installer un programme pour décompresser votre fichier, cela fonctionne. Je le ferai s'il en résulte que je suis payé, ou si le contenu est quelque chose que je "dois avoir" et qui n'est pas disponible de toute autre manière.
Un des avantages de tar est que si vous envoyez une archive à une personne, celle-ci est immédiatement reconnue. Le destinataire peut taper les commandes d’extraction en utilisant la mémoire musculaire.
La vraie question est: pourquoi certaines personnes sont-elles si obsédées par la sauvegarde d'un octet d'espace supplémentaire qu'elles demandent à tout le monde de perdre du temps à installer un utilitaire exotique et à apprendre à l'utiliser? Et puis, il y a les utilisations stupides des formats de compression et d'archives exotiques. Un fichier vidéo H.264 avec le son AAC doit-il vraiment être inséré dans un fichier RAR en plusieurs parties?
Le format tar est peut-être ancien, mais il stocke tout ce qui est pertinent: contenu du fichier, chemins, horodatage, autorisations et droits de propriété. Il stocke non seulement des liens symboliques, mais il peut préserver la structure des liens durs. Il stocke également des fichiers spéciaux, de sorte qu'une archive sur bande peut être utilisée pour des tâches telles qu'un répertoire /dev
minature utilisé lors du démarrage. Vous pouvez assembler une distribution Linux dont le format de paquet binaire ne contient rien, à l'exception des archives tarball non compressées par rapport à la racine du système de fichiers.
Beaucoup de bonnes réponses, mais elles négligent toutes un fait important. Tar possède un écosystème bien établi d'utilisateurs et de développeurs dans le monde semblable à Unix. Cela le maintient, tout comme Zip est maintenu par son écosystème DOS/Windows. Avoir un tel écosystème est ce qui fait vivre une technologie, pas ses avantages techniques.
Répondre directement aux questions spécifiques que vous avez posées:
Existe-t-il une perte de performance lors des étapes 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 de fonctionnement du compresseur comparé soit identique (par exemple, gzip et Deflate sont similaires).
Il existe une amélioration spécifique des performances, dans les cas généraux, en utilisant tar
, en particulier avec la bibliothèque de compression intégrée (les lignes de commande de style tar xvzf
ou tar xvjf
, dans lesquelles une bibliothèque de compression est utilisée plutôt qu'un second processus). Cela provient de deux causes principales:
lors du traitement d'un grand nombre de fichiers relativement petits, en particulier ceux couramment utilisés pour la distribution de logiciels, la redondance est élevée. La compression sur de nombreux fichiers entraîne une compression globale plus élevée que la compression de fichiers individuels. Et le "dictionnaire" est calculé une fois pour chaque bloc d'entrée, pas pour chaque fichier.
tar
comprend les systèmes de fichiers. Il est conçu pour enregistrer et restaurer un système d'exploitation opérationnel. Il saisit profondément ce qui est important sur un système de fichiers UNIX, et le capture et le restitue fidèlement. Autres outils ... pas toujours, en particulier la famille Zip, qui est mieux conçue pour le partage de fichiers entre plusieurs systèmes d’exploitation, où le document est l’important, et non une copie fidèle sensible au système d’exploitation.
Existe-t-il des fonctionnalités du format de fichier tar que ne possèdent pas les autres formats de fichier, tels que .7z et .Zip?
Traitement de fichiers clairsemés. Certaines des bibliothèques de bases de données directes reposent sur des fichiers fragmentés - des fichiers dont les données sont nominalement en Go, mais les données réelles écrites et stockées sont beaucoup, beaucoup moins, et seuls quelques blocs de disque sont réellement utilisés. Si vous utilisez un outil non détecté, alors lors de la décompression, vous vous retrouvez avec une consommation massive de blocs de disque, contenant tous des zéros. Remettre cela dans un fichier fragmenté est… douloureux. Si vous avez même la pièce pour le faire. Vous avez besoin d'un outil qui saisisse ce qu'est un fichier fragmenté et qui le respecte.
Métadonnées. Unix a évolué avec des choses étranges au fil des ans. Noms de fichier à 14 caractères, noms de fichier longs, liens liens sym, sticky bits, bits de superutilisateur, autorisations d'accès aux groupes hérités, etc. Tar les comprend et les reproduit. Outils de partage de fichiers ... pas tellement. Beaucoup de gens n'utilisent pas les liens comme ils pourraient le faire ... Si vous avez déjà travaillé avec un logiciel utilisant des liens, puis ayant utilisé un outil non averti pour la sauvegarde et la restauration, vous disposez désormais de nombreux outils indépendants. fichiers, au lieu d'un seul fichier avec plusieurs noms. Douleur. Votre logiciel échoue et votre disque est gonflé.
Puisque tar est un ancien format de fichier et que de nouveaux formats de fichiers existent aujourd'hui, pourquoi tar (qu'il soit 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 UNIX systèmes d’exploitation, pour les transferts de fichiers, les sources de programmes et les téléchargements binaires, et parfois même en tant que format de gestionnaire de paquets?
tar
fonctionne. Il fait le travail pour lequel il est conçu, eh bien. Il y a eu d'autres remplaçants annoncés (cpio
, pax
, etc., etc.). Mais tar est installé sur à peu près tout, et les bibliothèques de compression utilisées sont également très courantes pour d'autres raisons. Rien d’autre n’est venu qui vienne vraiment battre ce que fait tar. En l'absence d'avantages clairs, et de beaucoup d'utilisation intégrée et de connaissances dans la communauté, il n'y aura pas de remplacement. Le tar a beaucoup servi au fil des ans. Si nous obtenons des changements majeurs dans la manière dont nous pensons aux systèmes de fichiers, des fichiers non-texte deviennent en quelque sorte le moyen de transférer du code (vous ne pouvez pas imaginer comment, mais ignorez cela ...), vous pourrez alors trouver un autre outil. Mais alors ce ne serait pas le type de système d'exploitation que nous utilisons maintenant. Ce serait une chose différente, organisée différemment et elle aurait besoin de ses propres outils.
Je pense que la question la plus importante que vous n’avez pas posée est celle de savoir à quel emploi "tar" correspond mal.
tar
avec compression est fragile. Vous avez besoin de toutes les archives, bit par bit. D'après mon expérience, ce n'est pas résilient. Des erreurs sur un seul bit ont rendu les archives multi-parties inutilisables. Il n'introduit pas de redondance pour se protéger contre les erreurs (ce qui éliminerait l'une des questions que vous avez posées, à propos de la compression des données). S'il existe un risque de corruption des données, vous souhaitez une vérification des erreurs avec redondance afin de pouvoir reconstruire les données. Cela signifie, par définition, que vous n'êtes pas compressé au maximum. Vous ne pouvez pas avoir à la fois tous les bits de données nécessaires et leur valeur maximale de signification (compression maximale) et tous les bits de données pouvant être perdus et restaurés (redondance et correction d'erreur). Alors ... quel est le but de vos archives? tar
est idéal dans les environnements très fiables et lorsque l'archive peut être reproduite à partir de la source. IME, c'est en fait pire avec la chose originale suggérée par leurs noms - l'archivage sur bande. Les erreurs sur un seul bit sur une bande (ou pire, les erreurs sur un seul bit dans une tête de bande, où vous perdez un bit dans chaque octet d'une bande ou d'une archive entière) ont pour conséquence que les données deviennent inutilisables. Avec une redondance et une détection et une correction des erreurs suffisantes, vous pouvez surmonter l'un ou l'autre de ces problèmes.
Alors ... combien de bruit et de corruption y a-t-il dans l'environnement que vous étudiez, et la source peut-elle être utilisée pour régénérer une archive défaillante? La réponse, à partir des indices que vous avez fournis, est que le système n’est pas bruyant et que cette source est capable de régénérer une archive. Dans ce cas, tar
est suffisant.
tar
avec compression ne fonctionne pas non plus bien avec les fichiers pré-compressés. Si vous envoyez des données déjà compressées ... utilisez simplement tar et ne vous occupez pas de la phase de compression - cela ajoute simplement des cycles de processeur pour ne pas faire grand chose. Cela signifie que vous devez savoir ce que vous envoyez et pourquoi. Si c'est important pour vous. Si vous ne vous souciez pas de ces cas particuliers, tar copiera fidèlement les données autour de vous et compressera fidèlement échouera de faire beaucoup de choses utiles pour le réduire. Pas de gros problème, à part quelques cycles du processeur.