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