Malheureusement, pour déballer un seul membre de l' .tar.gz
archive, vous devez traiter l'archive entière, et vous ne pouvez pas faire grand-chose pour la réparer.
C'est là que .zip
(et certains autres formats comme .rar
) les archives fonctionnent beaucoup mieux, car le zip
format a un répertoire central de tous les fichiers qu'il contient avec des décalages directs pointant vers le milieu du zip
fichier, de sorte que les membres de l'archive peuvent être rapidement extraits sans traiter le tout.
Vous pourriez vous demander pourquoi le traitement .tar.gz
est si lent?
.tar.gz
(souvent abrégé en .tgz
) est simplement .tar
archivé compressé avec gzip
compresseur. gzip
est un compresseur de streaming qui ne peut fonctionner qu'avec un seul fichier. Si vous voulez obtenir une partie du gzip
flux, vous devez le décompresser dans son ensemble, et c'est ce qui le tue vraiment .tar.gz
(et pour .tar.bz2
, .tar.xz
et d'autres formats similaires basés sur .tar
).
.tar
le format est en fait très, très simple. Il s'agit simplement d'un flux d'en-têtes de fichier ou de répertoire de 512 octets (nom, taille, etc.), chacun suivi du contenu du fichier ou du répertoire (complété à une taille de bloc de 512 avec 0 octet si nécessaire). Lorsque vous observez un bloc 512 totalement nul pour un en-tête, cela signifie la fin de l' .tar
archive.
Certaines personnes pensent que même .tar
les membres des archives ne sont pas accessibles rapidement, mais ce n'est pas tout à fait vrai. Si l' .tar
archive contient peu de gros fichiers, vous pouvez en fait rechercher rapidement dans l'en-tête suivant, et ainsi vous pouvez trouver le membre d'archive nécessaire en quelques recherches (mais il pourrait toujours nécessiter autant de recherches qu'il y a de membres d'archive). Si votre .tar
archive contient de nombreux fichiers minuscules, cela signifie que la récupération rapide des membres devient effectivement impossible même pour les fichiers non compressés .tar
.