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

compare checksum of files between two remote servers

在我的本地盒子 "machineA" 上,我有两个文件夹 "/primary""/secondary"。这两个文件夹里面有一些文件。现在在远程服务器 "machineB" 上,我有一个文件夹 "/bat/snap/",其中包含很多文件。

"/primary""/secondary" 文件夹中的所有文件 "machineA" 中的 "machineB" 远程服务器应该在这个目录 "/bat/snap/" 中。现在我需要将本地框 "machineA" 上的 "/primary""/secondary" 文件夹中的所有文件的校验和与此目录 "/bat/snap/" 中的远程服务器进行比较。如果校验和有任何不匹配,那么我想报告 "machineA".

中所有有问题的文件

我在 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

我认为这与在 machineB 中处理的文件名中包含的 machineA 的多个路径有关...以下命令不是很好但对我有用,希望它有所帮助。

find /primary/ /secondary/ -type f | xargs md5sum | awk -F'/' '{print "echo " $NF " | ssh user@machineB \"(cd /bat/snap/  && md5sum -c)\""}' | bash