2つのtarアーカイブ(ファイルの内容、新規/削除されたファイル、シンボリックリンクを含む)を比較するには?

2つのtarアーカイブ(ファイルの内容、新規/削除されたファイル、シンボリックリンクを含む)を比較するには?

2つのtarアーカイブ(圧縮または非圧縮)があり、これら2つのアーカイブのすべての違いを見つけたいです。両方のアーカイブには完全なファイルシステムが含まれています(解凍すると、、、、、、、、...などの/binディレクトリが作成されます。これを理解してください)。私は以下を含むリストが欲しい:/home/root/usr/var/etc

  • 新しいファイル
  • 削除されたファイル
  • 変更されたファイル(サイズだけでなくファイルの内容)
  • 変更されたシンボリックリンク(相対および絶対)
  • 新規/削除されたシンボリックリンク

diffdiffが絶対シンボリックリンクを正しく認識しないため(アーカイブのファイルシステム構造を指しているため)、これらのアーカイブを解凍して使用することはできません。

両方のtarアーカイブの内容を比較する別の方法はありますか?

答え1

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

関連情報