Разные md5sum для одних и тех же файлов на локальном / удаленном сервере - PullRequest
1 голос
/ 05 февраля 2020

Я хотел бы проверить 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 ошибку.

Почему у меня нет той же суммы md5 и как я могу это исправить?

1 Ответ

1 голос
/ 05 февраля 2020

Вы столкнулись с проблемой цитирования: в разделе удаленного сервера вам нужно указать $, например: awk '{print \$1}':

В результате:

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