Question

En tant que développeur principalement basé sur 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 zippés . Pourquoi ce processus en deux étapes? Le zipping ne permet-il pas le regroupement de fichiers? Y a-t-il un autre avantage dont je ne suis pas au courant?

Était-ce utile?

La solution

bzip et gzip fonctionnent sur des fichiers uniques, pas sur des groupes de fichiers. Les anciens 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 les fichiers, puis choisir un outil de compression ( bzip , gzip , etc.).

Autres conseils

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 à toute la concaténation.

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. Avec un ajustement binaire approprié, 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 supérieur à celui de ZIP, car le compresseur de flux dispose de plus de données pour créer les fréquences de son dictionnaire et peut 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.

Il est étrange que personne d'autre n'ait mentionné le fait que les versions modernes de tar de GNU 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 le ' -c ' (vers stdout ou depuis stdin) et le ' -d ' (décompresser) options:

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 des fichiers compressés gzip ou bzip2 , GNU tar est détecté automatiquement ceux-ci 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 traité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 sélectionnée, la séparation des tâches. Entre autres choses, cela signifie que les utilisateurs pourraient utiliser le programme ' cpio ' pour empaqueter les fichiers (au lieu de tar ), puis utiliser le compresseur de leur choix (il était une fois , le compresseur préféré était pack , plus tard il était compresser (ce qui était beaucoup plus efficace que pack ), puis gzip qui tournait autour de ses deux prédécesseurs, et est entièrement concurrentiel avec zip (qui a été porté sur Unix, mais n’est pas natif là-bas), et maintenant bzip2 , qui, D'après mon expérience, il a généralement un avantage de 10 à 20% sur gzip .

[ Ajouté : une personne a indiqué dans sa réponse que cpio avait des conventions amusantes. C'est vrai, mais jusqu'à ce que tar de GNU obtienne les options appropriées (' -T - '), cpio était la meilleure commande lorsque vous ne vouliez pas pour archiver tout ce qui se trouvait sous un répertoire donné - vous pouvez en fait choisir exactement quels fichiers ont été archivés. Le seul inconvénient de cpio était que vous ne pouviez pas seulement choisir les fichiers - vous deviez 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 ' de 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 la fin de ' rm -fr / new / place '. 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 au cours de nombreuses années). ]

Ce qui est amusant, c’est que vous pouvez obtenir un comportement qui n’a pas été anticipé par les créateurs de tar et de gzip . Par exemple, vous pouvez non seulement gzip un fichier tar, vous pouvez également tarer des fichiers gzippés pour produire un files.gz.tar (techniquement, cela serait plus proche de la façon dont pkzip travaux). 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 ne doit pas avoir la moindre idée de la façon dont son programme sera utilisé, il lui suffit de lire à partir d'une entrée standard et d'écrire sur une sortie standard.

Dans le monde Unix, la plupart des applications sont conçues pour faire une chose, et le font bien. Les utilitaires de compression 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 aux logiciels.

Une autre raison pour laquelle il est si répandu est que les fichiers tar et gzip sont 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 / d'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 facultative, elle est définie par défaut sur le répertoire en cours)

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

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

Je pense que vous cherchiez plus de contexte historique à cela. Le zip d'origine é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 se demande toujours pourquoi il est toujours aussi dominant aujourd'hui.

De wikipedia pour Tar_ (fichier_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'archive) et le nom du programme utilisé pour gérer ces 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épertoires.

tar est UNIX comme UNIX est tar

À mon avis, la raison pour laquelle utilise encore l'utilisation de tar aujourd'hui, est que c'est l'un des cas (probablement rares) où l'approche UNIX vient de le rendre parfaitement opérationnel dès le début. en commençant.

Examinez 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 dans la philosophie UNIX :

  • un outil ( tar pour lui donner un nom ici) spécialisé dans la transformation de n'importe quelle sélection de fichiers, répertoires et liens symboliques, y compris all

  • et juste un autre outil arbitrairement interchangeable ( gzip bz2 xz pour ne nommer que quelques options) qui transforme tout flux d'octets d'entrée dans un autre flux de sortie (espérons-le) plus petit.

L’utilisation de cette approche et de cette approche offre de nombreux avantages à l’utilisateur comme au développeur:

  • extensibilité Permettant de coupler tar avec un algorithme de compression déjà existant ou un algorithme de compression restant à développer sans que soit obligé changer quoi que ce soit sur le fonctionnement interne de tar .

    Dès que le tout nouveau " hyper-zip-utra " ou si un outil de compression apparaît, vous êtes déjà prêt à l’utiliser pour intégrer 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.

    Prévenir la nécessité de réinventer en mettant en œuvre le stockage de la propriété, des autorisations, des horodatages, etc. maintes et maintes fois pour chaque nouveau archivage. Cet outil permet non seulement de gagner beaucoup de temps (sinon inutilement) 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 à l'aide de l'outil B, vous devez utiliser - this-time-its-another-one lors de l'utilisation de l'outil C, c'est `--hope-you-didnt-try-with-tool-as-switch.

    Alors que vous utilisiez l'outil D, vous l'auriez vraiment mal pris si vous n'aviez pas utilisé - si-vous-aviez-utilisé-outil-bs-switch-vos-fichiers-aurait-été-été supprimé-maintenant .

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 leur popularité pour plusieurs raisons.

  • cpio (syntaxe extra-terrestre; théoriquement plus cohérent, mais les gens aiment ce qu’ils savent, c’est ce qui prévaut)
  • ar (populaire il y a longtemps, maintenant utilisé pour le conditionnement de fichiers de bibliothèque)
  • shar (des scripts de shell auto-extractibles posaient toutes sortes de problèmes; jadis populaire malgré tout)
  • 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 il ya des années).

Apparemment, le seul inconvénient de tar.gz (ou ar.Z d'ailleurs), qui consiste à décompresser l'archive complète 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 significatif.

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 sont une combinaison des deux processus.

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.

A une é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 goudron.

Tar = Groupes de fichiers en 1 fichiers

GZip = Zip le fichier

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

Dans l’environnement Windows, vous utiliserez peut-être davantage WinZip ou WinRar pour effectuer un zip. Le processus Zip de ces logiciels regroupe le fichier et le fichier compressé, mais vous ne voyez tout simplement pas ce processus.

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 envoyer par courrier électronique, etc.

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

À l'époque d'Altos-XENIX (1982), nous avons commencé à utiliser tar (archiveur de bandes) pour extraire des fichiers à partir de 5 1/4 de 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.

Tar n'est pas seulement un format de fichier, c'est aussi 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 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 pense que ce n’est que l’inertie qui a persisté 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'archive) et le nom du programme utilisé pour gérer ces 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épertoires.

En tant que développeur Windows, il est compréhensible que les archives semblent étranges Le mot tar signifie 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 un install.exe qui fonctionnent avec toutes sortes d’assistances dans le registre, la création de répertoires et l’installation de .dll (Bibliothèque de liens dynamiques).

Sous Linux, en particulier Ubuntu, 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 laquelle 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écompressez le code source dans un répertoire.
  • compilez le code source (jamais vu 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 (pensez à la liste des programmes installés 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 étapes n'est PAS requis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top