Os arquivos tar.gz não possuem um índice. Ao contrário do zip ou de outros formatos de arquivo, não é trivial nem barato obter uma lista dos arquivos contidos ou outros metadados. Para mostrar a você quais arquivos estão contidos no arquivo, o tar realmente precisa descompactar o arquivo e extrair os arquivos, embora no caso da opção -t
, ele o faça apenas na memória.
Se um padrão comum em seu caso de uso for listar os arquivos contidos em um archive, você poderá considerar o uso de um formato de archive que possa adicionar um índice de arquivo ao arquivo compactado, e. g. zip.
Talvez você também queira dar uma olhada no formato HDF5 para cenários mais complexos.
Medidas
Eu só tive que fazer algumas medições para provar minha resposta e criei alguns diretórios com muitos arquivos neles e os empacotei, ambos, tar czf files#.tgz files#
e zip -r files#.zip files#
.
Para os testes, executei o comando de desempacotamento duas vezes de cada vez e obtive o resultado da segunda execução, para tentar evitar a medição da velocidade do disco.
Teste 1
Diretório files1
contendo 100.000 arquivos vazios .
$ time tar tzf files1.tgz >/dev/null
tar tzf files1.tgz > /dev/null 0,56s user 0,09s system 184% cpu 0,351 total
$ time unzip -l files1.zip >/dev/null
unzip -l files1.zip > /dev/null 0,30s user 0,34s system 99% cpu 0,649 total
o zip é mais lento aqui.
Teste 2
Diretório files2
contendo 5.000 arquivos com 512 bytes de dados aleatórios cada.
$ time tar tzf files2.tgz >/dev/null
tar tzf files2.tgz > /dev/null 0,14s user 0,03s system 129% cpu 0,131 total
$ time unzip -l files2.zip >/dev/null
unzip -l files2.zip > /dev/null 0,03s user 0,06s system 98% cpu 0,092 total
Ainda não é convincente, mas o zip é mais rápido desta vez.
Teste 3
Diretório files3
contendo 5.000 arquivos com 5kB de dados aleatórios cada.
$ time tar tzf files3.tgz >/dev/null
tar tzf files3.tgz > /dev/null 0,42s user 0,03s system 111% cpu 0,402 total
$ time unzip -l files3.zip >/dev/null
unzip -l files3.zip > /dev/null 0,03s user 0,06s system 99% cpu 0,093 total
Neste teste, pode-se ver que quanto maior o tamanho dos arquivos, mais difícil será para o tar listá-los.
Conclusão
Para mim, parece que o zip apresenta uma pequena sobrecarga que você notará apenas com muitos arquivos muito pequenos (quase vazios), enquanto que para um grande número de arquivos maiores, ele ganha o concurso ao listar os arquivos contidos no arquivo. p>