Quelle est la différence avec tous les différents types d'archives .tar?

16

Quelqu'un pourrait-il me dire ce qui se passe avec tant d'archives et en quoi diffèrent-elles?

Il y a au moins cinq que je peux penser, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

Quelle est la meilleure pour quelles applications? Il semble juste stupide de faire autant de variations du même fichier, mais je suis sûr qu'il y a une raison.

Trevor Gross
la source

Réponses:

18

Le .gz, .xz, .bz2, .7z, .lz, .zsuffixes sont utilisés pour préciser que le fichier est compressé avec ledit algorithme de compression. Son utilisation n'est pas limitée aux .tarfichiers, vous verrez également des fichiers tels que initrd.gz(un ramdisk initial compressé) ou manual.txt.gz(pour un document texte compressé). Vous pouvez également voir file.tgzce qui indique également une archive tar compressée par gzip (comme file.tar.gz).

L'extension de fichier est une convention, elle ne décrit pas nécessairement le contenu du fichier. Pour vérifier le type de fichier que vous manipulez, utilisez la filecommande. Exemple:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

D'après mon expérience, les fichiers compressés par gzip ( .gz) sont les plus courants. Il est rapide dans la compression et la décompression, bien qu'il existe d'autres algorithmes qui donnent de meilleurs taux de compression.

Lekensteyn
la source
8

En plus de la réponse @Lekensteyn, je voudrais ajouter que ce comportement est basé sur la philosophie Faire une chose et bien le faire - le tarprogramme sait comment mettre plusieurs fichiers en un seul flux (avec .tarextension), gzipsait compresser un fichier unique (ajout d'une .gzextension) *. En combinant ces outils, vous pouvez créer une commande qui comprime plusieurs fichiers en un seul .tag.gzfichier.

Cette approche est très flexible - vous pouvez combiner quelques commandes Unix standard pour faire toutes sortes de choses. Par exemple, si vous écrivez un meilleur programme pour compresser des fichiers, vous n'avez pas besoin de le modifier tarpour lui permettre de créer des .tar.mymegazipfichiers - à la place, vous dirigez simplement tarla sortie vers votre compresseur.

De même, tarne sait rien de SSH, mais en combinant les commandes, vous pouvez créer un script qui archive les fichiers, les télécharger sur une machine distante via SSH et les désarchiver là-bas.

Comparez ceci à la zipcommande, qui n'est pas originaire d'Unix - elle a des outils intégrés pour compresser des répertoires entiers, crypter des fichiers, diviser l'archive en fichiers zip plus petits, etc.


(note de bas de page) - oui, tarest capable de gzip ou bzip des fichiers lui-même en utilisant -zet -jcommutateurs, ils ont été ajoutés pour plus de commodité, et GNU tar est en train d'apparaître gzipou bzip2comme un nouveau processus.

Sergey
la source
Exemple: les commandes tar c dir/ | gzip > dir.tar.gzet les tar czf dir.tar.gz dir/commandes font la même chose. Un exemple où tarest combiné avec SSH et tar(encore une fois): tar cz Documents/ | ssh user@host 'tar xz(rsync équivalent serait: rsync -a Documents user@host:)
Lekensteyn