Infelizmente, para descompactar um único membro de .tar.gz
archive, você precisa processar todo o arquivo, e não há muito o que fazer para corrigi-lo.
É aqui que .zip
(e alguns outros formatos como .rar
) arquivam muito melhor, porque zip
format tem diretório central de todos os arquivos contidos nele com deslocamentos diretos apontando para o meio do zip
para que os membros do arquivo possam ser rapidamente extraídos sem processar a coisa toda.
Você pode perguntar por que processar .tar.gz
é tão lento?
.tar.gz
(geralmente abreviado como .tgz
) é simplesmente .tar
archive compactado com gzip
compressor. gzip
é um compressor de streaming que só pode trabalhar com um arquivo. Se você deseja obter qualquer parte do gzip
stream, é necessário descompactá-lo como um todo e é isso que realmente o mata por .tar.gz
(e por .tar.bz2
, .tar.xz
e outros formatos semelhantes com base em .tar
).
.tar
é realmente muito, muito simples. É simplesmente fluxo de arquivo de 512 bytes ou cabeçalhos de diretório (nome, tamanho, etc), cada um seguido pelo conteúdo do arquivo ou do diretório (preenchido para 512 tamanho de bloco com 0 bytes, se necessário). Quando você observar um bloco totalmente nulo 512 para um cabeçalho, isso significa que o final de .tar
archive.
Algumas pessoas acham que até .tar
membros do arquivo não podem ser acessados rapidamente, mas isso não é bastante verdadeiro. Se o arquivo .tar
contiver alguns arquivos grandes, você poderá procurar rapidamente o próximo cabeçalho, e assim você poderá encontrar o membro do arquivo necessário em poucas pesquisas (mas ainda pode exigir tantas buscas quantas forem os membros do arquivo). Se o seu arquivo .tar
contiver muitos arquivos minúsculos, isso significa que a recuperação rápida de membros torna-se efetivamente impossível mesmo para .tar
não compactados.