Linux

如何在 Linux 中輕鬆確認兩個單獨的目錄具有完全相同的內容?

  • August 12, 2013

CentOS 5.x

Mq 問題似乎與類似,但我不確定…

我有兩台伺服器(彼此完全隔離),每台伺服器都有一個目錄和子目錄,它們應該具有相同的確切內容。

例如,目錄佈局可能類似於:

伺服器 A -

/opt/foo/foob/1092380298309128301283/123.txt
/opt/foo/foob/5094380298309128301283/456.txt
/opt/foo/foob/5092380298309128301283/789.txt
/opt/foo/foob/1592380298309128301283/abc.txt

伺服器 B -

/opt/foo/foob/1092380298309128301283/123.txt
/opt/foo/foob/5094380298309128301283/456.txt
/opt/foo/foob/5092380298309128301283/789.txt
/opt/foo/foob/1592380298309128301283/abc.txt

理想情況下,我想要一種進行遞歸檢查並確認一切匹配的方法。

我還想避免使用任何第三方工具。

有任何想法嗎?

一種好方法是在樹中的每個文件上使用 md5sums:

在 server1 上執行:

find /opt/foo/foob/ -type f -print0 | xargs -0 md5sum > report_from_server1.tx

在 server2 上執行

find /opt/foo/foob/ -type f -print0 | xargs -0 md5sum > report_from_server2.tx

然後只需比較兩個文件(使用差異)或任何你喜歡的文件。

這與您正在尋找的內容一致嗎?

當然,如果需要,您可以使用 SSH 遠端執行命令。

如果您不一定關心發生了什麼變化,只是有些事情發生了變化,那麼 rsync 仍然非常適合。嘗試執行此命令並查看輸出,假設這是從“servera”執行的。

rsync -avcn /opt/foo/ serverb:/opt/foo

如果您實際執行同步過程,結果列表將是那些將被修改的文件。請記住,即使僅更改了時間戳,文件也會顯示在列表中,但內容保持不變。由於我們添加了-n標誌,因此實際上不會執行任何操作,僅報告。

引用自:https://serverfault.com/questions/390522