Linux 本地/远程服务器中相同文件上的不同md5sum

Linux 本地/远程服务器中相同文件上的不同md5sum,linux,ssh,server,md5sum,Linux,Ssh,Server,Md5sum,我想检查本地计算机上的文件列表的md5sum,并将其与远程服务器上复制的相同文件的md5sum进行比较 如果我在每台机器的终端中单独检查: # local find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum > 5a58015f2abec5bb1ee3e6a003ec4beb - # remote find . -type f -name "*.fastq.gz"

我想检查本地计算机上的文件列表的md5sum,并将其与远程服务器上复制的相同文件的md5sum进行比较

如果我在每台机器的终端中单独检查:

# local
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum
> 5a58015f2abec5bb1ee3e6a003ec4beb  -

# remote
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum
> 5a58015f2abec5bb1ee3e6a003ec4beb  -
现在,如果我在bash脚本中运行以下命令:

path_local="path/to/data/"
server_remote="user@ip.adress"
path_remote="path/to/data/"

local_md5sum=$(find ${path_local} -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum)
echo "local_md5sum : ${local_md5sum}"
remote_md5sum=$(ssh ${server_remote} "find ${path_remote} -type f -name '*.fastq.gz' -exec md5sum {} + | awk '{print $1}' | sort | md5sum")
echo "remote_md5sum : ${remote_md5sum}"

> local_md5sum : 5a58015f2abec5bb1ee3e6a003ec4beb  -
> remote_md5sum : 4a32580085edf9e49e00c46920517dd1  -
我在脚本中看到的唯一区别是,我对
'*.fastq.gz'
使用了简单的引号,而不是前面命令中的双引号。但是我必须或者我得到
find:路径必须在表达式之前
error


为什么我没有相同的md5sum以及如何解决这个问题?

您遇到了一个报价问题:在远程服务器部分,您需要替换
$
,如下所示:
awk'{print\$1}'

结果:

remote_md5sum=$(ssh ${server_remote} "find ${path_remote} -type f -name '*.fastq.gz' -exec md5sum {} + | awk '{print \$1}' | sort | md5sum")

为什么你要
md5sum | md5sum
??因为我有26个文件,第一个md5sum我得到一个26个md5sum的列表,然后我对这个列表进行排序,然后对这个列表进行另一个md5sum,这样我就可以只比较一个散列。我在这里找到了:所以首先比较所有(26行)输出!不幸的是,我们没有办法尝试这个!所以我们看不到bug在哪里。。。关心
ssh。。。“…'…$1…”“
尝试转义$sign或反转引号和双引号。或使用语法:
ssh remote/bin/bash