web-dev-qa-db-fra.com

Pourquoi devrais-je tarer un seul fichier?

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?

102
gardenhead

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 configuration peut être plus facilement étendue pour stocker plusieurs fichiers
  • Les fichiers .tar.gz sont très courants, les fichiers uniquement gzippés peuvent dérouter certains utilisateurs. (cf. commentaire MelBurslans )

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).

164
jofel

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:

  • stocke le nom de fichier et autres métadonnées : mode, ID propriétaire, ID de groupe, taille de fichier, heure de modification
  • stocke une somme de contrôle (pour l'en-tête uniquement)

gzip:

  • peut stocker le nom de fichier d'origine, mais c'est facultatif
  • a une somme de contrôle CRC-32 sur les données d'origine
  • il comprime le fichier

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.

63
Anthon

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.

30
ejdi

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.

21
plugwash

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, tarenregistre 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.

17
alexis

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!

8
Criggie

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.

2
Thomas Dickey