Linux

比較兩個遠端伺服器之間的文件校驗和

  • April 20, 2018

在我的本地盒子上"machineA",我有兩個文件夾"/primary""/secondary". 這兩個文件夾中有一些文件。現在在遠端伺服器上,"machineB"我有一個"/bat/snap/"包含大量文件的文件夾。

裡面的所有文件"/primary""/secondary"文件夾都"machineA"應該"machineB"在這個目錄的遠端伺服器中"/bat/snap/"。現在我需要將本地框中所有文件"/primary"和文件夾的校驗和與該目錄中的遠端伺服器進行比較。如果校驗和有任何不匹配,那麼我想報告所有有問題的文件"/secondary"``"machineA"``"/bat/snap/"``"machineA"

我需要在這裡使用 md5checksum 嗎?

更新

這是我正在執行的命令"machineA"

find /primary/ /secondary/ -type f | xargs md5sum | ssh machineB '(cd /bat/snap/ && md5sum -c)' | egrep -v 'OK$'

以下是我遇到的錯誤,之後我停止了上述命令。我檢查了兩個伺服器,我可以看到這個文件存在,那麼有什麼問題呢?

md5sum: /primary/abc_monthly_134_proc_7.data: No such file or directory
/primary/abc_monthly_134_proc_7.data: FAILED open or read

這就是md*sum編寫各種文件的目的。

在機器 A 上:

find primary secondary -type f | xargs md5sum > checksum.md5

(複製文件到機器B)

機器 B:

md5sum -c checksum.md5

編輯:組合成一個命令:find primary secondary -type f | xargs md5sum | ssh machineB '(cd /location_on_B/ && md5sum -c)' | egrep -v 'OK$'

(另一種選擇是告訴rsync以空執行模式執行--checksum。)

引用自:https://unix.stackexchange.com/questions/438825