本地/远程服务器中相同文件的不同 md5sum
Different md5sum on same files in local / remote server
我想检查我在本地计算机上的文件列表的 md5sum,并将其与我在远程服务器上复制的相同文件的 md5sum 进行比较。
如果我在每台机器上的终端分别检查:
# local
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print }' | sort | md5sum
> 5a58015f2abec5bb1ee3e6a003ec4beb -
# remote
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print }' | 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 }' | sort | md5sum)
echo "local_md5sum : ${local_md5sum}"
remote_md5sum=$(ssh ${server_remote} "find ${path_remote} -type f -name '*.fastq.gz' -exec md5sum {} + | awk '{print }' | 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")
我想检查我在本地计算机上的文件列表的 md5sum,并将其与我在远程服务器上复制的相同文件的 md5sum 进行比较。
如果我在每台机器上的终端分别检查:
# local
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print }' | sort | md5sum
> 5a58015f2abec5bb1ee3e6a003ec4beb -
# remote
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print }' | 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 }' | sort | md5sum)
echo "local_md5sum : ${local_md5sum}"
remote_md5sum=$(ssh ${server_remote} "find ${path_remote} -type f -name '*.fastq.gz' -exec md5sum {} + | awk '{print }' | 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")