É possível listar todos os arquivos em um arquivo * .tar.gz sem varrer todo o seu conteúdo?

0

Eu sei disso apenas:

tar --full-time -tvf /path/to/file.tar.gz

Mas faz com que o tar varre todo o arquivo e é demorado se for muito grande. Minha pergunta é que talvez haja uma maneira de escanear apenas o começo, apenas o cabeçalho de algum tipo, assim como acontece em outros formatos como * .7z ou * .rar?

    
por rsk82 03.04.2015 / 21:33

2 respostas

2

A resposta curta é "não".

7Zip , RAR, zip , et al. , são todos programas binários / formatos de arquivo. Eles compactam arquivos individuais e arquivam os resultados compactados. Isso resulta em partes do arquivo que são não compactadas, mas que, por sua vez, permitem que os programas acessem arquivos individuais.

gzip (a parte .gz ) é diferente. Ele compacta apenas um fluxo de byte único. O fluxo de bytes é fornecido por tar . bzip2 ( .bz2 ) faz a mesma coisa, embora com um algoritmo diferente. tar é o programa arquivador e gzip é o programa de compactação. Para chegar ao arquivo, o fluxo deve ser primeiro descompactado. Isso só pode acontecer passando pelo arquivo inteiro . Então, e só então, pode tar chegar às partes individuais do arquivo.

O motivo pelo qual você não vê a etapa gzip aqui é que ela foi construída em tar , não diretamente per se , mas por tar sabendo canalizar seu fluxo de saída para gzip .

    
por 03.04.2015 / 22:00
1

Não, não é possível. Veja Wikipedia para obter uma descrição do formato de um arquivo tar. Basicamente, é apenas uma sequência alternada de cabeçalho do arquivo e conteúdo do arquivo . Não há um índice no início, todas as informações sobre cada arquivo estão no cabeçalho do arquivo .

O cabeçalho inclui o tamanho do arquivo, portanto, ao listar apenas o conteúdo, o leitor pode pular a leitura de todos os blocos de conteúdo, procurando o início do próximo cabeçalho. No entanto, se o arquivo tar estiver compactado, isso não é possível, pois ele precisa primeiro descompactar o conteúdo para que possa ignorar o número apropriado de bytes descompactados.

    
por 03.04.2015 / 22:02

Tags