web-dev-qa-db-fra.com

Pourquoi les gens utilisent-ils des archives?

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, les fichiers sont d'abord placés dans une archive .tar, puis zipped . Pourquoi ce processus en deux étapes? Est-ce que compressé ne réalise pas le regroupement de fichiers? Y a-t-il un autre avantage dont je ne suis pas au courant?

84
Brian Sullivan

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 l’un des petits outils qui remplissent 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 entre un outil de compression (bzip, gzip, etc.).

129
Stewart Johnson

Il est étrange que personne d'autre n'ait mentionné que les versions modernes de GNU tar vous permettent de compresser lorsque vous regroupez:

tar -czf output.tar.gz directory1 ...

tar -cjf output.tar.bz2 directory2 ...

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):

tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...

Cela vous permettrait de spécifier n'importe quel compresseur alternatif.

[ Ajouté : Si vous extrayez à partir de fichiers compressés gzip ou bzip2, GNU tar les détecte automatiquement et exécute le programme approprié. C'est-à-dire que vous pouvez utiliser:

tar -xf output.tar.gz
tar -xf output.tgz        # A synonym for the .tar.gz extension
tar -xf output.tar.bz2

et ceux-ci seront manipulés correctement. Si vous utilisez un compresseur non standard, vous devez le spécifier lors de l'extraction.]

La raison de la séparation est, comme dans la réponse choisie, la séparation des tâches. Entre autres choses, cela signifie que les gens pourraient utiliser le programme 'cpio' pour empaqueter les fichiers (au lieu de tar), puis utiliser le compresseur de choix (autrefois, le compresseur préféré était pack, puis compress (qui était beaucoup plus efficace que pack), puis gzip qui entoure ses deux prédécesseurs, et est tout à fait compétitif avec Zip (qui a été porté sous Unix, mais n’est pas natif là-bas), et maintenant bzip2 qui, selon mon expérience, a généralement un avantage de 10-20% sur gzip.

[ Ajouté : une personne a noté dans sa réponse que cpio avait des conventions amusantes. C’est vrai, mais jusqu’à ce que GNU tar reçoive les options appropriées ('-T -'), cpio est la meilleure commande lorsque vous ne souhaitez pas archiver tout ce qui se trouve sous un répertoire donné - vous pouvez en fait choisir les fichiers ont été archivés. L'inconvénient de cpio était que non seulement pouviez choisir les fichiers - vous aviez à les choisir. Il y a toujours un endroit où cpio marque; il peut effectuer une copie in situ d'une hiérarchie de répertoires à une autre sans stockage intermédiaire:

cd /old/location; find . -depth -print | cpio -pvdumB /new/place

Incidemment, l'option '-depth' sur find 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 d'entrer l'addition à cette réponse, j'ai copié certains répertoires en lecture seule (permission 555); quand je suis allé supprimer la copie, j'ai dû assouplir les autorisations sur les répertoires avant que 'rm -fr /new/place' puisse se terminer. Sans l'option -depth, la commande cpio aurait échoué. Je ne m'en souvenais que lorsque je suis allé faire le nettoyage - la formule citée est pour moi automatique (principalement en raison de nombreuses répétitions répétées au cours de nombreuses années). ]

26
Jonathan Leffler

Une distinction importante réside dans la nature des deux types d'archives.

Les fichiers TAR sont un peu 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, sont appliqués à la concaténation complète.

Les fichiers Zip sont une concaténation de fichiers compressés individuellement, avec certains en-têtes. En réalité, l'algorithme DEFLATE est utilisé à la fois par Zip et par gzip et, avec les ajustements binaires appropriés, vous pouvez utiliser la charge utile d'un flux gzip et le 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 les grandes collections de petits fichiers, TAR suivi d'un compresseur de flux entraîne normalement un taux de compression plus élevé que celui de Zip, car le compresseur de flux disposera de plus de données pour créer les fréquences de son dictionnaire et pourra ainsi extraire davantage d'informations redondantes. D'autre part, une erreur (préservant 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écupérer de manière significative des erreurs en cours de flux. Ainsi, les fichiers Zip sont plus résistants à la corruption, car une partie de l'archive sera toujours accessible.

25
Barry Kelly

La chose amusante est que vous pouvez obtenir un comportement que les créateurs de tar et gzip n'ont pas anticipé. Par exemple, vous pouvez non seulement gzip un fichier tar, vous pouvez également tarer des fichiers gzippés pour produire un files.gz.tar (ce qui serait techniquement plus proche de la façon dont fonctionne pkzip). Vous pouvez également ajouter un autre programme dans le pipeline, par exemple une partie de la cryptographie, et choisir un ordre arbitraire de tarage, gzipping et cryptage. Quiconque a écrit le programme de cryptographie n'a pas besoin de la moindre idée de la façon dont son programme serait utilisé, il lui suffit de lire à partir d'une entrée standard et d'écrire sur une sortie standard.

15
Svante

Dans le monde Unix, la plupart des applications sont conçues pour faire une chose, et le font bien. Les utilitaires Zip les plus populaires sous Unix, gzip et bzip2, ne font que la compression de fichiers. tar effectue la concaténation de fichiers. Transférer la sortie de tar dans un utilitaire de compression répond aux besoins, sans ajouter de complexité excessive à aucun logiciel.

8
Harper Shelby

Une autre raison pour laquelle il est si répandu est que les fichiers tar et gzip figurent sur la quasi-totalité de la base d'installation * NIX. Je crois que c'est probablement la plus grande raison. C'est aussi pourquoi les fichiers Zip sont extrêmement répandus sous 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 commande (une étape):

  • Créer une archive:
  • tar -cfvj destination.tar.bz2 *.files
  • tar -cfvz destination.tar.gz *.files

  • Extraire une archive: (la partie -C est optionnelle, elle utilise par défaut le répertoire courant)

  • tar -xfvj archive.tar.bz2 -C destination_path
  • tar -xfvz archive.tar.gz -C destination_path

C’est ce que j’ai promis de garder en mémoire depuis de nombreuses années sous Linux et récemment sous Nexenta (OpenSolaris). 

7
Bryan Rehbein

Je pense que vous cherchiez plus de contexte historique à cela. L'original Zip était pour un seul fichier. Tar est utilisé pour placer plusieurs fichiers dans un seul fichier. Par conséquent, la compression et la compression sont le processus en deux étapes. On ne peut que deviner pourquoi il est toujours aussi dominant aujourd'hui.

From wikipedia for Tar_ (file_format)

En informatique, tar (dérivé de l'archive sur bande) est à la fois un format de fichier (sous la forme d'un type de flux d'archives) et le nom du programme utilisé pour gérer de tels fichiers. Le format a été normalisé par POSIX.1-1988 et, plus tard, POSIX.1-2001. Initialement développé sous un format brut, utilisé pour la sauvegarde sur bande et d'autres périphériques à accès séquentiel à des fins de sauvegarde, il est désormais couramment utilisé pour regrouper des collections de fichiers dans un fichier plus volumineux, à des fins de distribution ou d'archivage, tout en préservant les informations de système de fichiers telles que l'utilisateur et le groupe autorisations, dates et structures de répertoire.

5
martinatime

tar est UNIX comme UNIX est tar

À 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 (gzipbz2xz 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é Permet de coupler tar avec any algorithme de compression déjà existant ou any algorithme de compression restant à développer sans avoir à changer quoi que ce soit sur 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

4
mikyra

tar est populaire principalement pour des raisons historiques. Il existe plusieurs alternatives facilement disponibles. Certains d'entre eux existent depuis presque aussi longtemps que le goudron, mais ils ne pourraient pas surpasser en popularité pour différentes raisons.

  • cpio (syntaxe extraterrestre; théoriquement plus cohérent, mais les gens aiment ce qu'ils savent, tar prévaut)
  • ar (populaire il y a longtemps, maintenant utilisé pour le conditionnement de fichiers de bibliothèque)
  • shar (les scripts auto-extractibles de Shell, avaient toutes sortes de problèmes; autrefois, ils étaient populaires)
  • Zip (en raison de problèmes de licence, il n'était pas facilement disponible sur de nombreux Unices)

Un des principaux avantages (et inconvénients) 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 la taille des fichiers (jusqu’à cette décennie où une limite de 8 Gb sur les fichiers à l’intérieur de l’archive devenait un problème résolu depuis des années).

Apparemment, le seul inconvénient de tar.gz (ou de l'ar.Z en l'occurrence), qui consiste à décompresser l'archive entière pour extraire des fichiers uniques et répertorier le contenu de l'archive, ne blesse jamais assez les gens pour les rendre défectueux en nombre important .

3
edgar.holleis

gzip et bzip2 sont simplement un compresseur, pas un logiciel d'archivage. Par conséquent, la combinaison. Vous avez besoin du logiciel tar pour regrouper tous les fichiers.

Zip lui-même, et RAR aswell sont une combinaison des deux processus.

2
jishi

Habituellement, dans le monde * nux, les ensembles de fichiers sont distribués sous forme d'archives, puis éventuellement compressés. Gzip est un simple programme de compression de fichiers qui ne regroupe pas les fichiers tar ou zip.

À une certaine époque, Zip ne gérait pas correctement certains éléments considérés comme normaux par les systèmes de fichiers Unix tar et unix, tels que les liens symboliques, les fichiers de casse mixte, etc. Je ne sais pas si cela a changé, mais c'est pourquoi nous utilisons tar.

2
Paul Tomblin

Pour la même raison, les utilisateurs de Mac aiment les images de disque: elles constituent un moyen très pratique d’archiver des fichiers, puis de les transmettre, de les télécharger/les télécharger, de les envoyer par courrier électronique, etc. 

Et plus facile à utiliser et plus portable que zips IMHO.

1
Tobias

Tar = Groupes de fichiers dans 1 fichiers

GZip = Zip le fichier

Ils ont divisé le processus en 2. C'est tout.

Dans l'environnement Windows, vous serez peut-être plus habitué à utiliser WinZip ou WinRar qui effectuent un zip. Le processus Zip de ces logiciels regroupe le fichier et la compression, mais vous ne voyez tout simplement pas ce processus.

1
Patrick Desjardins

Durant mes années Altos-XENIX (1982), nous avons commencé à utiliser tar (archiveur de bandes) pour extraire des fichiers à partir de 5 1/4 disquettes ou de bandes en continu, ainsi que pour les copier sur ces supports. Sa fonctionnalité est très similaire aux commandes BACKUP.EXE et RESTORE.EXE de DOS 5.0 et 6.22 en tant que suppléments, vous permettant d’étendre plusieurs supports s’il n’est pas possible de les contenir. L'inconvénient était que si l'un des médias multiples 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 les systèmes d'exploitation de type UNIX, probablement pour des raisons de compatibilité ascendante. 

1
Frank R.

En tant que développeur Windows, il est compréhensible que tarballs semble étrange. Le mot tar représente l'archive de bande. Pensez aux magnétophones à bobines.

Dans le monde Windows, les programmes sont généralement installés avec un setup.exe ou install.exe qui fonctionne avec toutes sortes d’assistances dans le registre, la création de répertoires et l’installation de fichiers .dll (Dynamic Link Library).

Sous Linux, Ubuntu en particulier, de par ma propre expérience, les gestionnaires de paquets s’occupent de prendre une application et de l’installer la plupart du temps . Dans Ubuntu, le développeur crée un paquet se terminant par .deb (Debian, sur lequel Ubuntu est basé). La syntaxe de base pour installer un .deb est la suivante:

Sudo apt install <package_name>

Bien que cela soit relativement simple pour un utilisateur, les développeurs ont beaucoup de travail pour créer un package .deb et associer PPA.

Une méthode plus simple pour les développeurs consiste à créer une archive. Ensuite, la charge de l'installation est partagée par l'utilisateur final. Ils doivent:

  • téléchargez l'archive (se terminant généralement par .tar.gz).
  • décompresser le code source dans un répertoire.
  • compiler le code source (inouï dans Windows for Profit world).
  • j'espère écrire ce qu'ils ont fait au cas où ils auraient besoin de le répéter à l'avenir car il n'y a pas de base de données apt (liste des programmes installés par Windows) pouvant être sauvegardée.

Comme une autre réponse indique déjà à une autre question que vous avez posée, vous POUVEZ créer une archive et compresser des données en même temps. Un processus en deux passes n'est PAS requis.

0
WinEunuuchs2Unix

Tar n'est pas seulement un format de fichier, c'est une 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 extraire des données d'un disque et les stocker sur une 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 ne disposait toujours que d’une 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 démarré à la fois avec compression et archivage, mais les systèmes DOS n’avaient généralement pas de lecteurs de bande connectés!

De wikipedia pour Tar_ (format_fichier)

En informatique, tar (dérivé de l'archive sur bande) est à la fois un format de fichier (sous la forme d'un type de flux d'archives) et le nom du programme utilisé pour gérer de tels fichiers. Le format a été normalisé par POSIX.1-1988 et, plus tard, POSIX.1-2001. Initialement développé sous un format brut, utilisé pour la sauvegarde sur bande et d'autres périphériques à accès séquentiel à des fins de sauvegarde, il est désormais couramment utilisé pour regrouper des collections de fichiers dans un fichier plus volumineux, à des fins de distribution ou d'archivage, tout en préservant les informations de système de fichiers telles que l'utilisateur et le groupe. autorisations, dates et structures de répertoire.

0
Kieveli