Dans mon entreprise, nous téléchargeons un instantané de la base de données de développement local sous la forme d'un db.dump.tar.gz
fichier. La compression est logique, mais l'archive tar ne contient qu'un seul fichier (db.dump
).
Y a-t-il un intérêt à archiver un seul fichier, ou est .tar.gz
juste un idiome si commun? Pourquoi pas simplement .gz
?
Avantages de l'utilisation de .tar.gz
au lieu de .gz
est-ce
tar
stocke plus de métadonnées (autorisations UNIX, etc.) que gzip
.La surcharge d'utilisation de tar
est également très faible.
Si ce n'est pas vraiment nécessaire, je ne recommande toujours pas de tarer un seul fichier. Il existe de nombreux outils utiles qui peuvent accéder directement à des fichiers uniques compressés (tels que zcat
, zgrep
etc. - également existants pour bzip2
et xz
).
En fait, vous ne posez que la moitié de la question. L'autre question étant: "Pourquoi devrais-je compresser un fichier tar avec gzip?". Et la réponse n'est pas seulement que gzip
rend le fichier plus petit (dans la plupart des cas):
tar
:
gzip
:
Avec seulement tar
, vous ne pouvez pas être sûr que vos données n'ont pas été corrompues. Avec seulement gzip
, vous ne pouvez pas restaurer l'ID utilisateur/groupe, l'heure de modification et éventuellement pas le nom de fichier d'origine.
La combinaison est plus puissante que les commandes/formats individuels ne le fournissent, car ils se complètent mutuellement.
Il y a un gros avantage à utiliser uniquement des fichiers texte compressés - le contenu est directement accessible avec des outils en ligne de commande comme less
, zgrep
, zcat
.
Je dirais qu'il est probable que les gens ne réalisent tout simplement pas qu'ils peuvent utiliser gzip/ bzip2 / xz sans tar. Peut-être parce qu'ils proviennent d'un DOS /arrière-plan Windows où il est normal que la compression et l'archivage soient intégrés dans un seul format ( Zip =, RAR , etc.).
Bien que l'utilisation de tar puisse présenter de légers avantages dans certaines situations en raison du stockage des métadonnées ou de la possibilité d'ajouter des fichiers supplémentaires, il existe également des inconvénients. Avec un simple fichier gzip/bzip2/xz, vous pouvez le décompresser et diriger les données décompressées directement vers un autre outil (tel que votre base de données) sans jamais avoir à stocker les données décompressées sous forme de fichier sur disque. Avec un tarball, c'est plus difficile.
Il existe une différence importante qui pourrait rendre l'utilisation de tar
importante dans certaines circonstances: outre les "métadonnées" mentionnées par @jofel dans sa réponse, tar
enregistre le nom du fichier dans l'archive. Lorsque vous l'extrayez, vous obtenez le nom de fichier d'origine quel que soit le nom de l'archive.
Dans votre cas, l'archive tar et le fichier qu'elle contient ont les noms associés db.dump.tar.gz
et db.tar
, mais supposons que vous renommiez le fichier tar en 20-Apr-16.dump.tgz
, ou peu importe. Décompressez ceci avec tar xvfz
, et vous obtenez db.dump
. Pour comparaison, décompressez 20-Apr-16.dump.gz
et vous avez 20-Apr-16.dump
. (Edit: comme indiqué dans les commentaires, gzip enregistre également le nom du fichier; mais il n'est normalement pas utilisé lors de la décompression). Une archive tar
peut également contenir un chemin d'accès relatif qui place le fichier extrait dans un sous-répertoire.
Votre cas d'utilisation déterminera si ce type de persistance de nom de fichier est nécessaire, ou même souhaité , ou s'il est réellement indésirable. Mais certainement, quelle que soit la compression, une archive tar
se déplace différemment d'un fichier normal.
En plus de toutes les autres réponses, j'ai récemment rencontré une situation de script où un seul fichier était attendu, mais un ancien employé a écrit les scripts avec la possibilité de générer plus d'un fichier. Les fichiers ont donc été goudronnés et compressés, puis transférés et développés.
Lorsque le processus s'est développé au point de créer un fichier de 4,3 Go, il a survolé et créé un fichier .dump.001 en plus d'un fichier .dump. Tous les scripts ont continué à fonctionner.
C'est la paresse sysadmin proactive définie!
Je tarerais un seul fichier, pour le copier en préservant l'horodatage (qui est facilement ignoré dans les téléchargements). Les autorisations et la propriété des fichiers sont moins importantes: téléchargement est un terme qui s'applique aux systèmes qui ne sont pas bien intégrés.
Que ce soit taré ou non, il est courant de compresser le fichier pour accélérer les téléchargements - et éviter de manquer d'espace disque.