比较两个远程服务器之间的文件校验和

比较两个远程服务器之间的文件校验和

在我的本地盒子上"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

答案1

这就是各种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。)

相关内容