2つのtarアーカイブ(圧縮または非圧縮)があり、これら2つのアーカイブのすべての違いを見つけたいです。両方のアーカイブには完全なファイルシステムが含まれています(解凍すると、、、、、、、、...などの/bin
ディレクトリが作成されます。これを理解してください)。私は以下を含むリストが欲しい:/home
/root
/usr
/var
/etc
- 新しいファイル
- 削除されたファイル
- 変更されたファイル(サイズだけでなくファイルの内容)
- 変更されたシンボリックリンク(相対および絶対)
- 新規/削除されたシンボリックリンク
diff
diffが絶対シンボリックリンクを正しく認識しないため(アーカイブのファイルシステム構造を指しているため)、これらのアーカイブを解凍して使用することはできません。
両方の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\#/