2つのtarアーカイブ(圧縮または非圧縮)があり、2つのアーカイブのすべての違いを見つけたいと思います。両方のアーカイブには完全なファイルシステムが含まれています(つまり、解凍すると、/bin
、/home
、/root
、/usr
、/var
、/etc
、...などのディレクトリが生成されます)。次のリストが欲しいのですが。
Diffは絶対シンボリックリンクを正しく認識しないため(アーカイブのファイルシステム構造を指し示すため)、これらのアーカイブを解凍してdiff
を使用することはできません。
2つのtarアーカイブのコンテンツを比較する別の方法はありますか?
比較するシンボリックリンクがある場合、diff
から何か役立つものは得られないと思います。すべてを一度に実行するのではなく、2つの別々のパスを実行します。1つはメタデータを比較するため、もう1つはファイルの内容を比較するためです。
エキゾチックなファイル名がない場合は、tar -tv
またはpax -v
の出力を単純に比較するだけでメタデータ部分に対応できます。 bash/ksh/zshの場合:
pax -v <(archive1.tar) <(archive2.tar)
アーカイブの内容については、 avfs でマウントし、2つのディレクトリツリーを比較します。
mountavfs
diff -urN ~/.avfs$PWD/archive1.tar\#/ ~/.avfs$PWD/archive2.tar\#/