Gzip sans goudron? Pourquoi sont-ils utilisés ensemble?

Pourquoi le goudron et gzip sont-ils presque toujours utilisés ensemble, et pas seulement gzip? Y a-t-il un avantage à cette méthode?

TAR crée un seul fichier archivé à partir de nombreux fichiers, mais ne les comprime pas.

Détails du format

Un fichier tar est la concaténation d'un ou plusieurs fichiers. Chaque fichier est précédé d'un enregistrement d'en-tête de 512 octets. Les données du fichier sont écrites inchangées, sauf que leur longueur est arrondie à un multiple de 512 octets et l'espace supplémentaire est rempli de zéro. La fin d'une archive est marquée par au moins deux enregistrements consécutifs à zéro.

GZIP comprime un seul fichier dans un autre fichier unique, mais ne crée pas d'archives.

Format de fichier

… Bien que son format de fichier permet également de concrétiser plusieurs flux de ce type (les fichiers compressés sont simplement décompressés concaténés comme s'ils étaient à l'origine un fichier), le gzip est normalement utilisé pour compresser uniquement des fichiers simples. [4] Les archives compressées sont généralement créées en assemblant des collections de fichiers dans une seule archive tar, puis en compriant cette archive avec gzip.

Gzip / Bzip2 sont des compresseurs de flux. Ils compressent un flux de données en quelque chose de plus petit. Ils pourraient être utilisés sur des fichiers individuels, mais pas sur des groupes de fichiers seuls.

Tar d'autre part a la possibilité de transformer une liste de fichiers, de chemins d'accès, d'autorisations et d'informations sur la propriété, en un seul flux continu – et vice versa.

C'est pourquoi, pour archiver des fichiers (et si l'on a besoin d'une compression aussi), on utilise généralement une méthode de compression tar +.

Tar est en charge de faire une seule et même chose: (un) archiver dans (hors) un fichier d'archive unique. De quoi? D'une seule et même chose: un ensemble de fichiers.

Gzip est en charge de faire une seule et même chose: (un) compresser. De quoi? D'une chose et d'une chose seulement: un seul fichier de n'importe quel type … et cela inclut un fichier créé avec tar.

Cela revient à la philosophie UNIX de pipelining, à l'architecture sous-jacente "pipe and filters"; Le traitement de tout en tant que fichier et l'objectif architectural sonore de "one-thing-do-one-thing-only-and-does-it-well" (qui aboutit à un type de plug-n-play très élégant et simple .)

Dans sa simplicité, il est presque de nature algébrique (un objectif lourd dans la conception de systèmes). Et ce n'est pas un exploit facile.

À bien des égards (et non sans ses défauts), c'est presque un summum de la composabilité, de la modularité, du couplage en vrac et de la haute cohésion. Si vous comprenez ces quatre (et je veux dire vraiment comprendre ), vous comprenez, il sera évident pourquoi le goulot et le gzip fonctionnent comme deux par paires.

Tout d'abord, TAR n'a pas été créé pour créer des archives de fichiers . C'est Tape Tapech . Il s'agit d'écrire ou de charger une archive depuis / vers une cassette.

L'option -f permet d'utiliser un fichier comme "bande virtuelle", qui peut ensuite être compressé par un autre programme. En fait, une telle compression se produit sur les tapis du monde réel.

Bien sûr, la philosophie d'utiliser un programme pour le bien fonctionner compte également dans ce cas, mais on peut manquer pourquoi les archives TAR sont structurées comme un flux au lieu d'un répertoire de contenu + contenu.

Traditionnellement, les systèmes Unix utilisaient un programme pour effectuer une tâche selon la philosophie d'Unix : tar était juste un moyen de coller plusieurs fichiers dans un seul fichier, à l'origine pour la sauvegarde sur bande (par conséquent, le tar , t ape ar- chive). tar ne fournit pas de compression; L'archive non compressée résultante est généralement compressée avec un autre programme tel que gzip , bzip2 ou xz . Dans le passé, ils utilisaient la commande compress pour le faire; Les algorithmes de compression plus récents sont beaucoup plus efficaces que cela.

L'approche hautement modulaire dictée par la philosophie Unix signifie que chaque programme peut être utilisé individuellement le cas échéant, ou combiné pour effectuer des tâches plus complexes, y compris la création d'archives compressées comme décrit ici. Pour ces types de tâches, il permet également d'échanger des outils individuels au besoin; Vous modifiez simplement le programme de compression pour utiliser un algorithme de compression différent, sans avoir à remplacer l'utilitaire tar lui-même.

Cette approche modulaire n'est pas sans inconvénients. Comme mentionné dans les commentaires à d'autres réponses, un format d'archive compressé dédié comme .zip est mieux capable de gérer l'extraction de fichiers individuels; Les tarballs compressés doivent être décompressés presque dans leur intégralité afin d'extraire des fichiers près de la fin de l'archive, tandis que les archives .zip permettent un accès aléatoire à leur contenu. (Certains formats plus récents, tels que .7z , prennent en charge des archives solides et non solides, ainsi que des blocs solides de taille variable dans les grandes archives.) L'utilisation continue du tar en conjonction avec un utilitaire de compression séparé est une question de tradition et de compatibilité ; Également, .7z et .zip ne prennent pas en charge les métadonnées du système de fichiers Unix telles que les autorisations.