Un problème avec les .tar.gz
archives est que, lorsque j'essaie de simplement lister le contenu d'une archive, l'ordinateur le décompresse en fait, ce qui prendrait très longtemps si le fichier est volumineux.
D' autres formats de fichiers tels que .7z
, .rar
, .zip
ne sont pas ce problème. La liste de leur contenu ne prend qu'un instant.
À mon avis naïf, c'est un énorme inconvénient du .tar.gz
format d'archive.
J'ai donc en fait 2 questions:
- pourquoi les gens utilisent-
.tar.gz
ils autant, malgré cet inconvénient? - Quels choix (je veux dire d'autres logiciels ou outils) ai-je si je veux la capacité de "liste de contenu instantanée"?
tar
compression
gzip
archive
Dave.d
la source
la source
Réponses:
Il est important de comprendre qu'il y a un compromis ici.
tar
signifie archiveur de bande . Sur une bande, vous faites principalement de la lecture et de l'écriture séquentielles. Les bandes sont rarement utilisées de nos jours, maistar
sont toujours utilisées pour sa capacité à lire et à écrire ses données sous forme de flux.Tu peux faire:
Vous ne pouvez pas faire cela avec
zip
ou similaire.Vous ne pouvez même pas lister le contenu d'une
zip
archive sans le stocker localement dans un fichier recherché au préalable. Pense comme:ne fonctionnera pas.
Pour obtenir cette lecture rapide du contenu,
zip
ou similaire, vous devez créer un index. Cet index peut être stocké au début du fichier (auquel cas il ne peut être écrit que dans des fichiers normaux, pas des flux), ou à la fin, ce qui signifie que l'archiveur doit se souvenir de tous les membres de l'archive avant de l'imprimer à la fin et signifie qu'une archive tronquée peut ne pas être récupérable.Cela signifie également que les membres des archives doivent être compressés individuellement, ce qui signifie un taux de compression beaucoup plus faible, surtout s'il y a beaucoup de petits fichiers.
Un autre inconvénient des formats tels
zip
que l'archivage est lié à la compression, vous ne pouvez pas choisir l'algorithme de compression. Découvrez comment lestar
archives étaient compressées aveccompress
(tar.Z
), puis avecgzip
, puisbzip2
, puisxz
lorsque de nouveaux algorithmes de compression plus performants ont été conçus. Il en va de même pour le cryptage. Qui ferait confiancezip
au chiffrement de nos jours?Maintenant, le problème avec les
tar.gz
archives n'est pas tant que ça dont vous avez besoin pour les décompresser. La décompression est souvent plus rapide que la lecture d'un disque (vous constaterez probablement que répertorier le contenu d'une grande archive tgz est plus rapide que répertorier le même non compressé lorsqu'il n'est pas mis en cache en mémoire), mais que vous devez lire l'intégralité de l'archive.Ne pas pouvoir lire l'index rapidement n'est pas vraiment un problème. Si vous prévoyez avoir besoin de lire souvent le contenu de la table d'une archive, vous pouvez simplement stocker cette liste dans un fichier séparé. Par exemple, au moment de la création, vous pouvez faire:
Un plus gros problème de l'OMI est le fait qu'en raison de l'aspect séquentiel de l'archive, vous ne pouvez pas extraire des fichiers individuels sans lire toute la section de début de l'archive qui y mène. IOW, vous ne pouvez pas faire de lectures aléatoires dans l'archive.
Maintenant, pour les fichiers recherchés, il ne doit pas en être ainsi.
Si vous compressez votre
tar
archive avecgzip
, qui la comprime dans son ensemble, l'algorithme de compression utilise les données vues au début pour compresser, vous devez donc recommencer depuis le début pour décompresser.Mais le
xz
format peut être configuré pour compresser les données en morceaux individuels séparés (suffisamment grands pour que la compression soit efficace), cela signifie que tant que vous gardez un index à la fin de ces morceaux compressés, pour les fichiers recherchés, vous accédez à la données non compressées au hasard (en morceaux au moins).pixz
(parallèlexz
) utilise cette capacité lors de la compression destar
archives pour ajouter également un index du début de chaque membre de l'archive à la fin duxz
fichier.Ainsi, pour les fichiers recherchés, vous pouvez non seulement obtenir une liste du contenu de l'archive tar instantanément (sans métadonnées cependant) s'ils ont été compressés avec
pixz
:Mais vous pouvez également extraire des éléments individuels sans avoir à lire toute l'archive:
Maintenant, pourquoi des choses comme
7z
ouzip
sont rarement utilisées sur Unix est principalement parce qu'elles ne peuvent pas archiver les fichiers Unix. Ils ont été conçus pour d'autres systèmes d'exploitation. Vous ne pouvez pas faire une sauvegarde fidèle des données en utilisant ceux-ci. Ils ne peuvent pas stocker de métadonnées comme le propriétaire (identifiant et nom), l'autorisation, ils ne peuvent pas stocker de liens symboliques, de périphériques, de fifos ..., ils ne peuvent pas stocker d'informations sur les liens durs et d'autres informations de métadonnées comme des attributs étendus ou des ACL.Certains d'entre eux ne peuvent même pas stocker des membres avec des noms arbitraires (certains s'étoufferont avec une barre oblique inversée ou une nouvelle ligne ou deux points, ou des noms de fichiers non ascii) (certains
tar
formats ont cependant des limites).Ne décompressez jamais un fichier tgz / tar.xz sur le disque!
Dans le cas où ce n'est pas évident, on n'utilise pas d' archive
tgz
ortar.bz2
,tar.xz
... comme:Si vous avez un
.tar
fichier non compressé sur votre système de fichiers, c'est que vous avez fait quelque chose de mal.L'intérêt de ces
xz
/bzip2
/gzip
étant des compresseurs de flux est qu'ils peuvent être utilisés à la volée, dans des pipelines comme dansBien que les
tar
implémentations modernes sachent invoquerunxz
/gunzip
/bzip2
par elles-mêmes, alors:fonctionne généralement aussi (et décompresse à nouveau les données à la volée et ne stocke pas la version non compressée de l'archive sur le disque).
Exemple
Voici un arbre source du noyau Linux compressé avec différents formats.
Tout d'abord, comme indiqué ci-dessus, les 7z et les zip sont légèrement différents car ils ne peuvent pas y stocker les quelques liens symboliques et manquent la plupart des métadonnées.
Maintenant quelques temps pour lister le contenu après avoir vidé les caches système:
Vous remarquerez que répertorier le
tar.xz
fichier est plus rapide que.tar
celui même sur ce PC vieux de 7 ans, car la lecture de ces mégaoctets supplémentaires sur le disque prend plus de temps que la lecture et la décompression du fichier plus petit.Ensuite, OK, lister les archives avec 7z ou zip est plus rapide, mais ce n'est pas un problème, comme je l'ai dit, il est facile de contourner le problème en stockant la liste des fichiers à côté de l'archive:
Encore plus rapide que 7z ou zip même après avoir laissé tomber les caches. Vous remarquerez également que la taille cumulée de l'archive et de son index est toujours inférieure à celle des archives zip ou 7z.
Ou utilisez le
pixz
format indexé:Maintenant, pour extraire des éléments individuels de l'archive, le pire des cas pour une archive tar est lors de l'accès au dernier élément:
C'est assez mauvais car il doit lire (et décompresser) toute l'archive. Comparer avec:
Ma version de 7z ne semble pas être capable de faire un accès aléatoire, donc cela semble encore pire que
tar.xz
:Maintenant que nous en avons
pixz
un généré précédemment:C'est plus rapide mais toujours relativement lent car l'archive contient peu de gros blocs:
Il
pixz
faut donc toujours lire et décompresser un gros morceau de données (jusqu'à un) ~ 19 Mo.Nous pouvons accélérer l'accès aléatoire en rendant les archives plus petites (et en sacrifiant un peu d'espace disque):
la source
.tar.gz
peut prendre trop de temps. Surtout si le médium est lent. C'est alors que le format d'une archive devient la différence entre l'impossible et le pratique.Les administrateurs d'entreprise et universitaires sont souvent plus remarqués lorsque les choses se cassent que appréciés lorsque les choses fonctionnent efficacement. De tels environnements engendrent la peur de l'expérimentation et le mépris de la nouveauté .
dar ( D ISK Ar chiver) disposeune série de goudron -comme caractéristiques, ainsiaméliorations telles queaccès aléatoire rapide des archives compressées, catalogage AKA,indexation Alias, Alias « contenu instantané liste » ...
Voir aussi: Formats de compression avec un bon support pour l'accès aléatoire dans les archives?
la source