2つの異なるハードドライブに2つのディレクトリがあり、内容が本物であることを確認したいと思います。正確に同じ。私が読んだことによれば、それを使用してdiff -rq dir1 dir2
ファイルが欠落しているかどうかを確認できます。
-q
、--brief
ファイルが異なる場合にのみ報告
-r
、--recursive
見つかったサブディレクトリを再帰的に比較
しかし、私が知っている限り、diffは権限やタイムスタンプが異なることを確認しません。違いを確認できる他のパラメータや他のツールはありますか?
ベストアンサー1
mtree(8)
素晴らしいツールです。
注文する:
$ mtree -cp path/on/hostA -K sha256 | ssh hostB mtree -p path/on/hostB
階層hostA:path/on/hostA
と階層の間のhostB:path/on/hostB
タイプ、サイズ、タイムスタンプ、権限、およびコンテンツの違いが報告されます。また、欠落している項目(で見つかりませんhostB
)または関連していない項目(でのみ見つかります)が報告されます。hostB
継承が等しい場合、mtree
出力はエクスポートされず、終了コード 0 が返されます。
$ mtree -cp path/on/hostA -K sha256 | ssh hostB mtree -p path/on/hostB && echo match
match
それ以外の場合は、mtree
ゼロ以外の終了コードが返され、さまざまな項目が項目別に表示されます。
# create some differences on hostB:
$ ssh hostB 'rmdir path/on/hostB/d'
$ ssh hostB 'mkdir path/on/hostB/e'
$ ssh hostB 'date > path/on/hostB/b/B'
$ ssh hostB 'touch path/on/hostB/b/BB'
$ ssh hostB 'chmod 644 path/on/hostB/c/C'
# and then compare:
$ mtree -cp path/on/hostA -K sha256 | ssh hostB mtree -p path/on/hostB || echo fail
.: modification time (Tue May 18 13:27:20 2021, Tue May 18 13:45:06 2021)
extra: e
b/BB: modification time (Tue May 18 13:27:28 2021, Tue May 18 13:50:01 2021)
b/B: modification time (Tue May 18 13:27:03 2021, Tue May 18 13:46:04 2021)
sha256 (0x4f7986b5a925296c575043e73e76b59b6eb84da37c50f2e86baaafc75e2fcdca, 0x46f3f4e748cfef2a4cd679d6c9723cb44eb0526b760854fcef33bb97ca27fae2)
c/C: permissions (0600, 0644)
missing: ./d
fail
一行ずつお知らせしますmtree
。
- ルートルート自体(
.
)のタイムスタンプが異なります。 - に表示さ
e
れない追加項目があります。hostB
hostA
- エントリの変更時間は 2 つのホスト間で異なります
b/BB
(ただしコンテンツはそうではありません)。 - 変更時間とアイテムの内容(ハッシュ)は、2つのホスト間で
SHA256
異なります。b/B
c/C
両方のホストは異なるアクセス権を持ちます。hostB
欠落しているアイテム./d