Infelizmente, para descompactar um único membro do .tar.gzarquivo, é 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 zipformato possui um diretório central de todos os arquivos contidos nele, com deslocamentos diretos apontando para o meio do ziparquivo, 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 .tararquivo compactado com gzipcompressor. gzipé um compressor de streaming que só pode funcionar com um arquivo. Se você deseja obter qualquer parte do gzipfluxo, você tem que descompactá-lo como um todo, e isso é o que realmente mata-lo para .tar.gz(e para .tar.bz2, .tar.xze outros formatos semelhantes com base em .tar).
.tarformato é 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 .tararquivo morto.
Algumas pessoas pensam que mesmo os .tarmembros do arquivo não podem ser acessados rapidamente, mas isso não é bem verdade. Se o .tararchive 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 .tararquivo contém muitos arquivos pequenos, isso significa que a recuperação rápida de membros se torna efetivamente impossível, mesmo para descompactados .tar.