Lista o conteúdo do arquivo tar grande rapidamente

5

Eu preciso listar o conteúdo de um arquivo tar razoavelmente grande (gzipado) (cerca de 37GiB). tar -ztvf archive demora para sempre. Existe alguma maneira de obter essa listagem rapidamente? Possivelmente apenas listando o conteúdo até uma certa profundidade de diretório?

Eu poderia ter feito alguma coisa enquanto empacotava o arquivo para permitir uma listagem mais rápida do conteúdo?

    
por Thomas Arildsen 04.02.2014 / 09:58

2 respostas

2

Então, você tem um conjunto de arquivos, que você fez um arquivo usando "tar" , que irá criar um arquivo de saída. Então, você usou "gzip" para comprimir aquele arquivo ". Tar" em um ". Zip" .

Se for esse o caso, então o processo de obter uma listagem de todos os arquivos no arquivo ". tar" , requer que o arquivo ". tar" precise ser totalmente descompactado do arquivo ". zip" , antes que o conteúdo do arquivo ". tar" possa ser listado.

Isso sempre levará mais tempo do que obter uma listagem dos arquivos armazenados "diretamente" em um arquivo ". zip" . Se o arquivo for grande, esse tempo pode ser considerável.

Se você quiser reduzir o tempo necessário para listar os arquivos em um arquivo compactado, então:

  1. descompacte (descompacte) o arquivo ". tar" do arquivo ". zip" e expanda o resultado < em> arquivo ". tar" no conjunto de arquivos subjacente

  2. crie um arquivo ". zip" diretamente do conjunto de arquivos.

Dessa forma, os arquivos do arquivo podem ser listados sem descompactar o arquivo.

    
por 04.02.2014 / 11:17
1

-z significa ungzip ou gzip do arquivo tar. O próprio tar empacota sem compressão. Quando você gzip não há muito o que você pode fazer, os metadados estão no arquivo tar que está compactado,

$ gunzip -l co.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
             177183             1044480  83.0% file.tar

Isso é tudo que o gzip vê. Você tem que gunzip para voltar ao alcatrão. A maneira Unix de contornar isso é simplesmente gerar um manifesto, find . > MANIFEST e enviar com ele. No entanto, existem outras opções como, em vez de usar .tar.gz , simplesmente enviar um formato diferente que não comprima metadados. Acho que 7zip se encaixa nessa descrição.

Mais recentemente, as pessoas passaram a usar sha1sum ou md5sum , que é um plano melhor do que um MANIFEST regular.

find destination/ -type f -exec sha1sum {} +; > sha1sum

Isso também pode ser verificado com bastante facilidade, mas é desnecessário porque ambos tar e gzip fornecem somas de verificação internamente,

sha1sum -c ./sha1sum
    
por 04.02.2014 / 11:47