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\#/