Como comparar dois arquivos tar (incluindo conteúdo de arquivo, arquivos novos / removidos, links simbólicos)?

2

Eu tenho dois arquivos tar (compactados ou não compactados) e quero encontrar todas as diferenças nos dois arquivos. Ambos os arquivos contêm um sistema de arquivos completo (ou seja, quando descompactado, geraria diretórios como /bin , /home , /root , /usr , /var , /etc , ... Espero que você entenda o ponto) . Quero ter uma lista dos seguintes itens:

  • Novos arquivos
  • Arquivos removidos
  • Arquivos alterados (conteúdo do arquivo, não apenas tamanho)
  • Links simbólicos alterados (relativos e absolutos)
  • links simbólicos novos / removidos

Não posso simplesmente descompactar esses arquivos e usar diff , pois o diff não reconhecerá corretamente links simbólicos absolutos (como eles apontariam para a estrutura do sistema de arquivos do arquivo).

Existe outra maneira de comparar o conteúdo de dois arquivos de tar?

    
por Alex 12.11.2013 / 14:19

1 resposta

1

Eu não acho que você obterá nada útil de diff se você tiver links simbólicos para comparar como tal. Em vez de tentar fazer tudo de uma vez, faça duas passagens separadas: uma para comparar metadados e outra para comparar o conteúdo do arquivo.

Se você não tiver nomes de arquivos exóticos, uma comparação simples da saída de tar -tv ou pax -v será suficiente para a parte de metadados. No bash / ksh / zsh:

pax -v <(archive1.tar) <(archive2.tar)

Para o conteúdo do arquivo, monte-o com avfs e compare as duas árvores de diretório.

mountavfs
diff -urN ~/.avfs$PWD/archive1.tar\#/ ~/.avfs$PWD/archive2.tar\#/
    
por 13.11.2013 / 01:49

Tags