Pourquoi les tar y gzip sont presque toujours utilisés ensemble, et pas seulement gzip ? Y a-t-il un avantage à cette méthode ?
Réponses
Trop de publicités?TAR crée un seul fichier archivé à partir de plusieurs fichiers, mais ne les compresse 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 sans être modifiées, sauf que leur longueur est arrondie à un multiple de 512 octets et que l'espace supplémentaire est rempli de zéro. La fin d'une archive est marquée par au moins deux enregistrements consécutifs remplis de zéro.
GZIP compresse un fichier unique dans un autre fichier unique, mais ne crée pas d'archives.
Format de fichier
Bien que son format de fichier permette également de concaténer plusieurs flux de ce type (les fichiers zippés sont simplement décompressés et concaténés comme s'il s'agissait à l'origine d'un seul fichier), gzip est normalement utilisé pour compresser uniquement des fichiers uniques.[4] Les archives compressées sont généralement créées en assemblant des collections de fichiers dans une seule archive tar, puis en compressant 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 peuvent être utilisés sur des fichiers individuels, mais pas sur des groupes de fichiers.
Tar, quant à lui, a la capacité de transformer une liste de fichiers, avec les chemins d'accès, les autorisations et les 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 de compression également), on utilise généralement tar + une méthode de compression.
Tar est chargé de faire une et une seule chose bien : (dé)archiver dans (hors) un seul fichier d'archive. De quoi ? D'une seule et unique chose : un set de fichiers.
Gzip est chargé de faire une et une seule chose bien : (dé)compresser. De quoi ? D'une chose et d'une seule : un seul fichier. de tout type ... et cela inclut un fichier créé avec tar.
Cela remonte à la philosophie UNIX du pipelining, à l'architecture sous-jacente "pipe et filtres", au traitement de tout comme un fichier et à l'objectif architectural sain du "une chose fait une chose seulement et la fait bien" (ce qui donne une sorte de plug-n-play très élégant et simple).
Dans sa simplicité, il est presque de nature algébrique (un objectif important dans la conception de systèmes). Et ce n'est pas une mince affaire.
À bien des égards (et non sans défauts), c'est presque un sommet en matière de composabilité, de modularité, de couplage lâche et de cohésion élevée. Si vous comprenez ces quatre (et je veux dire comprendre vraiment ), vous comprenez, il sera évident de comprendre pourquoi tar et gzip fonctionnent ainsi par paire.
Tout d'abord, le TAR n'a pas été créé pour créer fichier archives. C'est Enregistreur de bande . Son rôle est d'écrire ou de charger une archive sur/depuis une bande.
El -f lui permet d'utiliser un fichier comme "bande virtuelle", qui peut ensuite être compressé par un autre programme. En fait, une telle compression se produit également sur les lecteurs de bandes du monde réel.
Bien sûr, la philosophie d'utiliser un seul programme pour bien faire les choses compte aussi dans ce cas, mais on peut se demander 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 seul programme pour effectuer une tâche par le Philosophie d'Unix : tar
était juste un moyen de regrouper plusieurs fichiers en un seul, à l'origine pour la sauvegarde sur bande (d'où tar
, t singe ar ciboulette). 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 l'ancien temps, ils utilisaient le compress
pour ce faire ; les nouveaux algorithmes de compression sont beaucoup plus efficaces que cela.
L'approche hautement modulaire dictée par la philosophie Unix signifie que chaque programme peut être utilisé individuellement selon les besoins, ou combiné pour effectuer des tâches plus complexes, y compris la création d'archives compressées comme décrit ici. Pour ce genre de tâches, il est également facile de remplacer les outils individuels selon les besoins ; il suffit de changer le programme de compression pour utiliser un algorithme de compression différent, sans avoir à remplacer le système de gestion des fichiers. tar
l'utilité elle-même.
Cette approche modulaire n'est pas sans inconvénients. Comme mentionné dans les commentaires aux autres réponses, un format d'archive compressé dédié comme .zip
est mieux à même de gérer l'extraction de fichiers individuels ; les archives compressées doivent être décompressées dans leur quasi-totalité afin d'extraire les fichiers situés vers la fin de l'archive, alors que .zip
Les archives permettent un accès aléatoire à leur contenu. (Certains formats plus récents, tels que .7z
supportent des archives solides et non solides, ainsi que des blocs solides de taille variable dans des archives plus importantes). L'utilisation continue de tar
en conjonction avec un utilitaire de compression séparé est une question de tradition et de compatibilité ; également, .7z
y .zip
ne prennent pas en charge les métadonnées du système de fichiers Unix telles que les permissions.