2つのフォルダ/ディスクの内容の比較(タイムスタンプ、権限を含む)

2つのフォルダ/ディスクの内容の比較(タイムスタンプ、権限を含む)

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れない追加項目があります。hostBhostA
  • エントリの変更時間は 2 つのホスト間で異なりますb/BB(ただしコンテンツはそうではありません)。
  • 変更時間とアイテムの内容(ハッシュ)は、2つのホスト間でSHA256異なります。b/B
  • c/C両方のホストは異なるアクセス権を持ちます。
  • hostB欠落しているアイテム./d

おすすめ記事