Infelizmente, para descompactar um único membro do .tar.gz
arquivo, é necessário processar o arquivo inteiro e não há muito o que fazer para corrigi-lo.
É aqui que .zip
(e alguns outros formatos como .rar
) os arquivos funcionam muito melhor, porque o zip
formato possui um diretório central de todos os arquivos contidos nele, com deslocamentos diretos apontando para o meio do zip
arquivo, para que os membros do arquivo possam ser rapidamente extraídos sem processar tudo.
Você pode perguntar por que o processamento .tar.gz
é tão lento?
.tar.gz
(geralmente abreviado como .tgz
) é simplesmente um .tar
arquivo compactado com gzip
compressor. gzip
é um compressor de streaming que só pode funcionar com um arquivo. Se você deseja obter qualquer parte do gzip
fluxo, você tem que descompactá-lo como um todo, e isso é o que realmente mata-lo para .tar.gz
(e para .tar.bz2
, .tar.xz
e outros formatos semelhantes com base em .tar
).
.tar
formato é realmente muito, muito simples. É simplesmente um fluxo de cabeçalhos de arquivo ou diretório de 512 bytes (nome, tamanho, etc.), cada um seguido pelo conteúdo do arquivo ou diretório (preenchido para o tamanho de 512 blocos com 0 bytes, se necessário). Quando você observa um bloco 512 totalmente nulo para um cabeçalho, isso significa o fim do .tar
arquivo morto.
Algumas pessoas pensam que mesmo os .tar
membros do arquivo não podem ser acessados rapidamente, mas isso não é bem verdade. Se o .tar
archive contiver poucos arquivos grandes, você poderá procurar rapidamente o próximo cabeçalho e, assim, poderá encontrar o membro do archive necessário em poucas buscas (mas ainda poderá exigir tantas buscas quanto os membros do archive). Se o seu .tar
arquivo contém muitos arquivos pequenos, isso significa que a recuperação rápida de membros se torna efetivamente impossível, mesmo para descompactados .tar
.