Я должен сравнить контрольную сумму всех файлов в папках /primary
и /secondary
в machineA
с файлами в этой папке /bat/snap/
, которая находится на удаленном сервере machineB
. На удаленном сервере будет много файлов вместе с файлами, которые у нас есть в machineA
.
- Если в контрольной сумме есть какое-либо несоответствие, я хочу сообщить обо всех файлах, имеющих проблемы в
machineA
, с полным путем и завершить работу с ненулевым кодом состояния.
- Если все совпадает, выйдите из нуля.
Я написал одну команду (не уверен, есть ли лучший способ написать ее), что я работаю на machineA
, но она очень медленная. Есть ли способ сделать это быстрее?
(cd /primary && find . -type f -exec md5sum {} +; cd /secondary && find . -type f -exec md5sum {} +) | ssh machineB '(cd /bat/snap/ && md5sum -c)'
Также распечатывает имя файла, как это ./abc_monthly_1536_proc_7.data: OK
. Есть ли способ, которым он может распечатать полный путь к этому файлу в machineA
?
ssh для удаленного хоста для каждого файла определенно не очень эффективен. parallel
может ускорить его, выполняя его одновременно для большего количества файлов, но более эффективный способ, вероятно, немного подправит команду, чтобы она передавала ssh на machineB и получала всю сумму md5 за один раз. Возможно ли это сделать?