我想检查本地计算机上的文件列表的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: paths must precede expression错误。

为什么我没有相同的md5sum,我该如何解决?

请您参考如下方法:

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

结果:

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!