web-dev-qa-db-fra.com

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

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

59
Mehrdad

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 de fichier sont écrites sans modification, sauf que leur longueur est arrondie à un multiple de 512 octets et que l'espace supplémentaire est rempli à zéro. La fin d'une archive est marquée par au moins deux enregistrements consécutifs remplis à zéro.

GZIP compresse un fichier unique en un autre fichier unique, mais ne crée pas d'archives.

Format de fichier

... Bien que son format de fichier autorise également la concaténation de plusieurs flux de ce type (les fichiers compressés sont simplement décompressés comme s'il s'agissait d'un fichier à l'origine), gzip est normalement utilisé pour compresser des fichiers uniques. [4] Les archives compressées sont généralement créées en assemblant des collections de fichiers dans une archive tar unique, puis en compressant cette archive avec gzip.

72
Matt Ball

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.

Tar, d’autre part, a la possibilité de transformer une liste de fichiers, avec les chemins, les autorisations et les informations de propriété, en un seul flux continu, et inversement.

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

17
Dan

Tar est chargé de bien faire une et une seule chose: archiver (dés) archiver dans un fichier d'archive unique. De quoi? D'une seule et unique chose: un ensemble de fichiers.

Gzip est chargé de bien faire une et une seule chose: compresser. De quoi? D'une chose et d'une chose seulement: un seul fichier de tout type ... et qui inclut un fichier créé avec tar.

Cela remonte à la philosophie UNIX de traitement en pipeline, l'architecture sous-jacente de "tuyaux et filtres"; le traitement de tout comme un fichier et l'objectif architectural sonore de "une chose-fait-une-chose-seule-et-fait-bien" (ce qui donne un 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 ses défauts), il s’agit presque d’un summum en matière de composabilité, de modularité, de couplage lâche et de grande cohésion. Si vous comprenez ces quatre (et je veux dire comprenez vraiment ), vous comprendrez, il sera évident que pourquoi tar et gzip fonctionnent comme cela par paires.

12
luis.espinal

Tout d'abord, TAR n'a pas été créé pour créer des archives de fichiers . C'est Tape ARchiver . Son travail consiste à écrire ou à charger une archive sur/à partir d'une bande.

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

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

8
p_l

Traditionnellement, les systèmes Unix utilisaient un programme pour exécuter une tâche selon la philosophie Unix : tar était simplement un moyen de conditionner plusieurs fichiers en un seul fichier, à l’origine pour la sauvegarde sur bande (d'où tar, t ape 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 . Auparavant, ils utilisaient la commande compress pour le faire; Les nouveaux algorithmes de compression sont beaucoup plus efficaces que cela.

L'approche hautement modularisée dictée par la philosophie Unix signifie que chaque programme peut être utilisé individuellement ou combiné pour effectuer des tâches plus complexes, y compris la création d'archives compressées comme décrit ici. Pour ce type de tâches, il est également facile d’échanger des outils individuels selon les besoins; vous voudriez simplement que le programme de compression utilise 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é tel que .Zip est mieux à même de gérer l'extraction de fichiers individuels; Les archives compressées doivent être presque entièrement décompressées pour pouvoir extraire les fichiers vers 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 les archives solides et non solides, ainsi que les blocs solides de taille variable dans les archives plus grandes.) L’utilisation de tar avec un utilitaire de compression séparé est une question de tradition et de compatibilité; De plus, .7z et .Zip ne prennent pas en charge les métadonnées de système de fichiers Unix telles que les autorisations.

5
bwDraco