O problema aqui é com o formato, o formato TAR (Tape ARchive) é projetado para acesso sequencial, não acesso aleatório. E o gzip é um bom complemento para o tar, já que é um formato de compressão baseado em fluxo, também não para acesso aleatório.
Portanto, uma ferramenta de alto nível que não interage diretamente com os blocos compactados, terá que analisar todo o arquivo toda vez que precisar ler alguma coisa, primeiro para obter a lista de arquivos, então talvez o cache invalide e lê-lo novamente e, em seguida, para cada arquivo copiado, ele pode ler novamente. Você pode criar uma ferramenta que lembra a posição de cada arquivo e quais blocos ele precisa descompactar para obtê-lo, mas parece que poucos se incomodaram com isso.
Se você quiser que isso seja mais rápido, faça um tar tzf file.tar.gz > filelist
, abra a lista de arquivos em vim , gedit ou o que for, remova as linhas dos arquivos que você não precisa, salve e extraia-os com tar xzf file.tar.gz -T filelist -C extracted/
.
Para obter acesso aleatório a um arquivo compactado, você deve usar talvez zip com extensões posix, rar ou como dru8274 sugerido, squashfs ou mesmo ZFS com compactação ativada, ou btrfs se o btrfs tiver obtido compactação para funcionar no momento de ler.