En tant que développeur principalement Windows, il me manque peut-être quelque chose de culturel dans la communauté Linux, mais cela m'a toujours dérouté.
Lors du téléchargement de quelque chose, les fichiers sont d'abord placés dans une .tar
archive puis compressés . Pourquoi le processus en deux étapes? La compression ne permet- elle pas de regrouper les fichiers? Y a-t-il un autre avantage dont je ne suis pas au courant?
Réponses:
bzip
etgzip
travaillez sur des fichiers uniques, pas sur des groupes de fichiers. Les ancienszip
(etpkzip
) fonctionnent sur des groupes de fichiers et ont le concept d'archive intégré.La philosophie * nix est l'un des petits outils qui font très bien des tâches spécifiques et peuvent être enchaînés. C'est pourquoi il existe ici deux outils qui ont des tâches spécifiques et qui sont conçus pour bien s'emboîter. Cela signifie également que vous pouvez utiliser tar pour les fichiers de groupe, puis vous avez le choix d'un outil de compression (
bzip
,gzip
, etc.).la source
tar
archives: support des permissions du système de fichiers Linux . Que se passerait-il si vous téléchargiez un paquet Debian, votre gestionnaire de paquet l'installait, mais qu'aucun des exécutables n'était exécutable? C'est la vraie raison pour laquelle tout le monde utilise des archives tar ...;)Une distinction importante réside dans la nature des deux types d'archives.
Les fichiers TAR ne sont guère plus qu'une concaténation du contenu du fichier avec certains en-têtes, tandis que gzip et bzip2 sont des compresseurs de flux qui, dans les archives tar, sont appliqués à l'ensemble de la concaténation.
Les fichiers ZIP sont une concaténation de fichiers compressés individuellement, avec quelques en-têtes. En fait, l'algorithme DEFLATE est utilisé à la fois par zip et gzip, et avec un ajustement binaire approprié, vous pouvez prendre la charge utile d'un flux gzip et la placer dans un fichier zip avec les entrées d'en-tête et de dictionnaire appropriées.
Cela signifie que les deux types d'archives différents ont des compromis différents. Pour de grandes collections de petits fichiers, TAR suivi d'un compresseur de flux entraînera normalement un taux de compression plus élevé que ZIP car le compresseur de flux aura plus de données pour construire ses fréquences de dictionnaire, et pourra ainsi extraire plus d'informations redondantes. D'autre part, une erreur (de préservation de la longueur du fichier) dans un fichier ZIP ne corrompra que les fichiers dont les données compressées ont été affectées. Normalement, les compresseurs de flux ne peuvent pas réellement récupérer des erreurs en cours de diffusion. Ainsi, les fichiers ZIP sont plus résistants à la corruption, car une partie de l'archive sera toujours accessible.
la source
Il est étrange que personne d'autre n'ait mentionné que les versions modernes de GNU
tar
vous permettent de compresser lorsque vous regroupez:Vous pouvez également utiliser le compresseur de votre choix à condition qu'il prenne en charge les options '
-c
' (vers stdout, ou depuis stdin) et '-d
' (décompresser):Cela vous permettrait de spécifier n'importe quel compresseur alternatif.
[ Ajouté : Si vous procédez à une extraction
gzip
ou àbzip2
des fichiers compressés, GNUtar
les détecte automatiquement et exécute le programme approprié. Autrement dit, vous pouvez utiliser:et ceux-ci seront traités correctement. Si vous utilisez un compresseur non standard, vous devez le spécifier lorsque vous effectuez l'extraction.]
La raison de la séparation est, comme dans la réponse choisie, la séparation des fonctions. Entre autres choses, cela signifie que les gens pouvaient utiliser le
cpio
programme ` ` pour empaqueter les fichiers (au lieu detar
) puis utiliser le compresseur de leur choix (il était une fois, le compresseur préféré étaitpack
, plus tard, il étaitcompress
(ce qui était beaucoup plus efficace quepack
), puisgzip
qui tournait autour de ses deux prédécesseurs, et est entièrement compétitif aveczip
(qui a été porté sous Unix, mais n'y est pas natif), et maintenantbzip2
qui, d'après mon expérience, a généralement un avantage de 10 à 20% par rapport àgzip
.[ Ajouté : quelqu'un noté dans sa réponse qui
cpio
a des conventions amusantes. C'est vrai, mais jusqu'à ce que GNUtar
obtienne les options appropriées ('-T -
'),cpio
c'était la meilleure commande lorsque vous ne vouliez pas archiver tout ce qui se trouvait sous un répertoire donné - vous pouviez en fait choisir exactement quels fichiers étaient archivés. L'inconvénient decpio
c'est que non seulement vous pouvez choisir les fichiers - vous deviez les choisir. Il y a encore un endroit où lescpio
scores; il peut faire une copie in-situ d'une hiérarchie de répertoires à une autre sans aucun stockage intermédiaire:Incidemment, l'
-depth
option « » activéefind
est importante dans ce contexte - elle copie le contenu des répertoires avant de définir les autorisations sur les répertoires eux-mêmes. Lorsque j'ai vérifié la commande avant de saisir l'ajout à cette réponse, j'ai copié certains répertoires en lecture seule (autorisation 555); quand je suis allé supprimer la copie, j'ai dû relâcher les permissions sur les répertoires avant que 'rm -fr /new/place
' puisse finir. Sans l'-depth
option, lacpio
commande aurait échoué. Je ne m'en suis souvenu que lorsque je suis allé faire le nettoyage - la formule citée est automatique pour moi (principalement en raison de nombreuses répétitions sur de nombreuses années). ]la source
Le plus drôle, c'est que vous pouvez obtenir un comportement non anticipé par les créateurs de
tar
etgzip
. Par exemple, vous pouvez non seulement gzip un fichier tar, vous pouvez également tarer des fichiers gzippés, pour produire unfiles.gz.tar
(ce serait techniquement plus proche de la façon dontpkzip
fonctionne). Ou vous pouvez mettre un autre programme dans le pipeline, par exemple de la cryptographie, et vous pouvez choisir un ordre arbitraire de tarage, de gzipping et de chiffrement. Celui qui a écrit le programme de cryptographie n'a pas à avoir la moindre idée de la façon dont son programme serait utilisé, il lui suffit de lire à partir de l'entrée standard et d'écrire sur la sortie standard.la source
Dans le monde Unix, la plupart des applications sont conçues pour faire une chose et bien la faire. Les utilitaires zip les plus populaires sous Unix, gzip et bzip2, ne font que la compression de fichiers. tar fait la concaténation des fichiers. Le transfert de la sortie de tar dans un utilitaire de compression fait ce qui est nécessaire, sans ajouter de complexité excessive à l'un ou l'autre des logiciels.
la source
Une autre raison pour laquelle il est si répandu est que tar et gzip sont sur presque toute la base d'installation * NIX là-bas. Je pense que c'est probablement la principale raison. C'est également pourquoi les fichiers zip sont extrêmement répandus sur Windows, car la prise en charge est intégrée, quelles que soient les routines supérieures de RAR ou 7z.
GNU tar vous permet également de créer / extraire ces fichiers à partir d'une seule commande (une étape):
tar -cfvj destination.tar.bz2 *.files
tar -cfvz destination.tar.gz *.files
Extraire une archive: (la partie -C est facultative, elle est par défaut dans le répertoire courant)
tar -xfvj archive.tar.bz2 -C destination_path
tar -xfvz archive.tar.gz -C destination_path
C'est ce que je me suis engagé en mémoire depuis mes nombreuses années sur Linux et récemment sur Nexenta (OpenSolaris).
la source
Je pense que vous cherchiez davantage de contexte historique à ce sujet. Le zip d'origine était pour un seul fichier. Tar est utilisé pour placer plusieurs fichiers dans un seul fichier. Par conséquent, le goudronnage et la fermeture éclair sont le processus en deux étapes. Pourquoi est-ce encore si dominant aujourd'hui?
De wikipedia pour Tar_ (file_format)
la source
tar est UNIX comme UNIX est tar
À mon avis, la raison de l' utilisation encore
tar
aujourd'hui est que c'est l'un des cas (probablement rares) où l'approche UNIX l'a parfaitement fait 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 manière dont la séparation des différentes tâches se déroule ici est la philosophie UNIX à son meilleur:
un outil (
tar
pour lui donner un nom ici) spécialisé dans la transformation de toute sélection de fichiers, répertoires et liens symboliques, y compris toutes les métadonnées pertinentes comme les horodatages, les propriétaires et les autorisations en un seul flux d'octets.et juste un autre outil arbitrairement interchangeable (
gzip
bz2
xz
pour ne citer que quelques options) qui transforme tout flux d'entrée d'octets en un autre flux de sortie (espérons-le) plus petit.L'utilisation d'une telle approche offre de nombreux avantages à l'utilisateur ainsi qu'au développeur:
extensibilité Permet de coupler
tar
avec n'importe quel algorithme de compression déjà existant ou n'importe quel algorithme de compression encore à développer sans avoir à changer quoi que ce soit sur le fonctionnement interne detar
.Dès que le tout nouvel outil de compression "hyper-zip-utra" ou whater sort, vous êtes déjà prêt à l'utiliser pour embrasser votre nouveau serviteur avec toute la puissance de
tar
.la stabilité
tar
a été largement utilisée depuis le début des années 80, testée et exécutée sur de nombreux systèmes d'exploitation et machines.Éviter le besoin de réinventer la roue dans la mise en œuvre de la propriété de stockage, des autorisations, des horodatages et autres encore et encore pour chaque nouvel outil d'archivage permet non seulement d'économiser beaucoup de temps (autrement inutilement dépensé) en développement, mais garantit également la 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 en utilisant l'outil B, vous devez utiliser--this-time-its-another-one
tout en utilisant l'outil C, c'est `--hope-you-didnt-try-with-tool-as-switch.Alors qu'en utilisant l'outil D, vous l'auriez vraiment gâché si vous ne l'aviez pas utilisé
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.la source
le goudron est populaire principalement pour des raisons historiques. Il existe plusieurs alternatives facilement disponibles. Certains d'entre eux sont là depuis presque aussi longtemps que le goudron, mais n'ont pas pu surpasser le goudron en popularité pour plusieurs raisons.
Un avantage majeur (et un inconvénient) de tar est qu'il n'a ni en-tête de fichier, ni répertoire central de contenu. Pendant de nombreuses années, il n'a donc jamais souffert de limitations de taille de fichier (jusqu'à cette décennie où une limite de 8 Go sur les fichiers à l'intérieur de l'archive est devenue un problème, résolu il y a des années).
Apparemment, le seul inconvénient de tar.gz (ou ar.Z d'ailleurs), qui est que vous devez décompresser l'archive entière pour extraire des fichiers uniques et répertorier le contenu de l'archive, ne blesse jamais suffisamment les gens pour les faire défaut de tar en nombre significatif .
la source
gzip et bzip2 sont simplement un compresseur, pas un logiciel d'archivage. D'où la combinaison. Vous avez besoin du logiciel tar pour regrouper tous les fichiers.
ZIP lui-même et RAR sont également une combinaison des deux processus.
la source
Habituellement, dans le monde * nux, les lots de fichiers sont distribués sous forme de tarballs puis éventuellement gzippés. Gzip est un simple programme de compression de fichiers qui ne fait pas le regroupement de fichiers que tar ou zip fait.
À un moment donné, zip ne traitait pas correctement certaines des choses que les systèmes de fichiers Unix tar et unix considéraient comme normaux, comme les liens symboliques, les fichiers de cas mixtes, etc. Je ne sais pas si cela a changé, mais c'est pourquoi nous utilisons tar.
la source
Tar = regroupe les fichiers en 1 fichiers
GZip = Compressez le fichier
Ils ont divisé le processus en 2. C'est tout.
Dans l'environnement Windows, vous êtes peut-être plus habitué à utiliser WinZip ou WinRar qui font un Zip. Le processus Zip de ces logiciels regroupe le fichier et la compression, mais vous ne voyez tout simplement pas ce processus.
la source
Pour la même raison que les utilisateurs de mac adorent les images disque: c'est un moyen très pratique d'archiver des éléments, puis de les transmettre, de les télécharger ou de les envoyer par courrier électronique, etc.
Et plus facile à utiliser et plus portable que les zips IMHO.
la source
À l'époque d'Altos-XENIX (1982), nous avons commencé à utiliser tar (archiveur de bande) pour extraire des fichiers à partir de disquettes 5 1/4 ou de bandes en streaming ainsi que pour les copier sur ces supports. Sa fonctionnalité est très similaire aux commandes BACKUP.EXE et RESTORE.EXE dans DOS 5.0 et 6.22 en tant que suppléments, vous permettant de couvrir plusieurs supports si cela ne peut pas tenir dans un seul. L'inconvénient était que si l'un des multiples médias avait des problèmes, tout cela ne valait rien. tar et dd proviennent d'UNIX SYstem III et sont restés un utilitaire de publication standard avec un système d'exploitation de type UNIX, probablement pour des raisons de compatibilité descendante.
la source
Tar n'est pas seulement un format de fichier, mais c'est un format de bande. Les bandes stockent les données bit par bit. Chaque implémentation de stockage était personnalisée. Tar était la méthode par laquelle vous pouviez retirer des données d'un disque et les stocker sur bande de manière à ce que d'autres personnes puissent les récupérer sans votre programme personnalisé.
Plus tard, les programmes de compression sont arrivés et * nix n'avait encore qu'une seule méthode pour créer un seul fichier contenant plusieurs fichiers.
Je crois que c'est juste l'inertie qui a continué avec la tendance tar.gz. Pkzip a commencé avec la compression et l'archivage d'un seul coup, mais les systèmes DOS n'avaient généralement pas de lecteurs de bande connectés!
De wikipedia pour Tar_ (file_format)
la source
En tant que développeur Windows, il est compréhensible que les archives tar semblent étranges. Le mot
tar
signifie Tape Archive. Pensez aux magnétophones à bobine.Dans le monde Windows, les programmes sont généralement installés avec un
setup.exe
ouinstall.exe
qui fonctionnent toutes sortes de magie dans le registre, créant des répertoires et installant des.dll
fichiers (Dynamic Link Library).Sous Linux, Ubuntu en particulier d'après ma propre expérience, les gestionnaires de paquets se chargent de prendre une application et de l'installer la plupart du temps . Dans Ubuntu, le développeur crée un package se terminant par
.deb
(Debian, sur lequel Ubuntu est basé). La syntaxe de base pour installer un.deb
est:Bien que ce soit relativement simple pour un utilisateur, il est beaucoup de travail pour les développeurs de créer un
.deb
package et associer un PPA .Une méthode plus simple pour les développeurs consiste à créer une archive tar. Ensuite, le fardeau de l'installation est partagé par l'utilisateur final. Elles doivent:
.tar.gz
).apt
base de données (pensez à la liste des programmes installés par Windows) qui puisse être sauvegardée.Comme une autre réponse l'indique déjà à une autre question que vous avez posée, vous POUVEZ créer une archive tar et compresser les données en même temps. Un processus en deux passes n'est PAS nécessaire.
la source