Est-ce que tar compresse réellement les fichiers ou les regroupe simplement?

37

J'avais l'habitude de supposer qu'il tars'agissait d'un utilitaire de compression, mais je ne suis pas sûr s'il compresse réellement des fichiers ou s'agit-il simplement d'un fichier ISO, d'un fichier contenant des fichiers?

Le docteur
la source
Également sur SuperUser .
Allquixotic

Réponses:

49

Tar est un outil d'archivage (Tape ARchive), il ne collecte que les fichiers et leurs métadonnées et produit un fichier. Si vous souhaitez compresser ce fichier ultérieurement, vous pouvez utiliser gzip / bzip2 / xz. Pour plus de commodité, tar fournit des arguments pour compresser l'archive automatiquement pour vous. Consultez la page de manuel de tar pour plus de détails.

0xAF
la source
9
Une légère clarification sur la réponse. C'est la tar GNU qui fournit ces arguments de compression supplémentaires. Par exemple, Solaris tar ne fournit pas d'arguments pour la compression.
Tero Kilkanen
5
oooh, c'est pour ça que je continue à voirthing.tar.7z
Mooing Duck
BSD tar fournit également un argument pour la compression, bien qu'il accepte zet détermine uniquement la méthode de compression en fonction de l'extension, alors que GNU tar dispose d' zZjJarguments distincts pour les différentes méthodes de compression.
wingedsubmariner
2
Il suffit de lire la page de manuel BSD tar, et il s’avère que je me suis trompé. BSD utilise tar séparément zZjJpour la compression, tout comme GNU tar. Cependant, il détecte automatiquement la compression lors de la décompression, alors que GNU tar s'attend zZjJégalement à cela.
wingedsubmariner
5
@wingedsubmariner: non; Les versions modernes de GNU tardécompressent automatiquement sans nécessiter d' -zZjJoptions.
Jonathan Leffler
17

tarproduit des archives; la compression est une fonctionnalité distincte. Cependant, tar seul peut réduire l'utilisation de l'espace lorsqu'il est utilisé sur un grand nombre de petits fichiers plus petits que la taille du cluster du système de fichiers. Si un système de fichiers utilise des clusters de 1 ko, même un fichier contenant un seul octet consomme 1 ko (plus un inode). Une tararchive n'a pas cette surcharge.

BTW, un fichier ISO n'est pas vraiment "un fichier pour contenir des fichiers" - c'est en fait une image de tout un système de fichiers (celui conçu à l'origine pour être utilisé sur des CD) et sa structure est donc considérablement plus complexe.

Michael Borgwardt
la source
3
En réalité, un fichier vide ne consomme pas 1 Ko. Un fichier de 1 à 1023 octets sera.
psusi
@ psusi donc pour un fichier d'octets 1-1023 consomme 1024 toujours, ce qui entraîne un gaspillage de 1023-1 octets.
Shiplu Mokaddim
2

La commande UNIX tar d'origine n'a pas compressé les archives. Comme mentionné dans un commentaire, le fichier Solaris tar ne se compresse pas. Ni HP-UX, ni AIX, FWIW. Par convention, les archives non compressées se terminent par .tar.

Avec GNU / Linux, vous obtenez GNU tar. (Vous pouvez installer GNU tar sur d’autres systèmes UNIX.) Par défaut, il ne se compresse pas. cependant, il ne compresse l'archive obtenue avec gzip (également par GNU) si vous fournissez -z. Le suffixe conventionnel pour les fichiers gzippés est le suivant .gz: vous verrez donc souvent des fichiers tarball (argot pour une archive tar, impliquant généralement que celle-ci a été compressée) et se terminant par .tar.gz. Cette fin implique que tar a été exécuté, suivi de gzip, par exemple tar cf - .|gzip -9v > archive.tar.gz. Vous trouverez également des archives se terminant par .tgz, par exemple tar czf archive.tgz ..

Edit: www.linfo.org/tar.html m'a rappelé que les supports GNU tar fonctionnalité beaucoup plus que simplement la compression avec gzip, et il m'a rappelé que les suffixes sont plus que des conventions simples. Ils ont une sémantique intégrée. Il supporte également bzip2 ( -jpour .bz2) et old compress ( -Zpour .Z). Ensuite, j'ai regardé la page de manuel et on m'a rappelé que -amappe automatiquement la méthode de compression souhaitée en fonction du suffixe.

Un autre nit. Comme l'indique la page de manuel tar de Linux, GNU génère des pages d'informations, et non des pages de manuel. Pour en savoir plus sur GNU tar, lancez info tar.

tbc0
la source
GNU tar ne gère toujours pas les compressions par lui-même, il se contente de diriger vers / depuis gzip, bzip2, compresser et autres.
ott--
J'ai jeté un coup d'œil à la source . GNU tar gère la compression! L'implémentation tire parti de la réutilisation du code et des principes architecturaux d'espace utilisateur UNIX. "Just pipes" sous-estime la façon dont la compression est étroitement intégrée à l'outil. Le fait que cela arrive aux programmes d'aide à la fourchette est un détail technique. Si vous voulez défendre "juste des pipes", citez les noms de fichiers et les numéros de ligne et voyons de quel côté la communauté se situe.
tbc0
Cela prend quelques jours avant que je puisse vérifier cette source.
ott--
1

L'utilitaire tar ne se compresse pas tant que vous n'avez pas argumenté le faire [nom du fichier tar -z].

UN J
la source