Pourquoi goudron et gzip sont-ils presque toujours utilisés ensemble, et pas seulement gzip? Y at-il un avantage à cette méthode?
Pourquoi goudron et gzip sont-ils presque toujours utilisés ensemble, et pas seulement gzip? Y at-il un avantage à cette méthode?
Réponses:
TAR crée un seul fichier archivé à partir de plusieurs fichiers, mais ne les compresse pas.
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, mais ne crée pas d'archives.
... 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.
tar -xzvf tarball.tar.gz single/file.txt
. En coulisse, il doit faire un travail supplémentaire, mais pour les apparences, il extrait un seul fichier.
.tar.*
archive compressée est toujours «solide», c'est-à-dire. se compose d'un seul flux compressé. En .zip
revanche, une archive n’est pas solide du tout, l’algorithme de compression est démarré de nouveau pour chaque fichier. Il sacrifie l'efficacité de la compression pour accélérer l'accès aléatoire. .7z
les archives peuvent être pleines, non solides ou avoir des blocs pleins.
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, de son côté, 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.
Tar est chargé de bien faire une et une seule chose: archiver (dés) archiver dans un seul fichier d'archive. 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 cela 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 "bien faire", ce qui donne un plug-n-play très élégant et simple .)
Dans sa simplicité, il est de nature presque algébrique (un objectif ambitieux 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 vraiment comprendre ), vous comprendrez, il sera évident que pourquoi tar et gzip fonctionnent comme cela par paires.
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 plutôt que comme un répertoire de contenu + contenu.
Traditionnellement, les systèmes Unix utilisés un programme pour effectuer une tâche par la philosophie Unix : tar
était juste un moyen pour emballer plusieurs fichiers en un seul fichier, à l' origine pour la sauvegarde sur bande (donc tar
, t singe ar civette). tar
ne fournit pas de compression; l'archive non compressée résultant est généralement compressée avec un autre programme tel que gzip
, bzip2
ou xz
. Autrefois, ils utilisaient la compress
commande 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, notamment 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' tar
utilitaire lui-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é .zip
est mieux à même de gérer l'extraction de fichiers individuels; Les archives compressées doivent être décompressées presque entièrement pour pouvoir extraire les fichiers vers la fin de l'archive, tandis que les .zip
archives 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 continue de tar
conjointement avec un utilitaire de compression séparé est une question de tradition et de compatibilité; aussi, .7z
et .zip
ne supporte pas les métadonnées du système de fichiers Unix telles que les permissions.