Как узнать, какие файлы отличаются на двух серверах

Здесь мы можем видеть, что md5sums этих двух каталогов различны, как определить, являются ли структуры папок или некоторые определенные файлы причиной этой разницы?

 [skynet] ~> ssh evn-web04 'find /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \; | сортировать -k 34 | md5sum"


Ubuntu 14.04.4 LTS evn-web04.tumo.lab ssh-pty

f247a2e41cf54f14cefe83b8872ae862 -

[skynet] ~> ssh evn-web03 'find /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \; | сортировать -k 34 | md5sum"
Ubuntu 14.04.4 LTS evn-web03.tumo.lab ssh-pty

53413a49fb754210666f4292e8b9ee14 -

3 ответа

Создайте список файлов на одном сервере и проверьте его на другом. Повторите с серверами в обратном порядке и сопоставьте списки.

Сначала соберите список файлов и соответствующих им хэшей на evn-web04:

ssh evn-web04 'find  /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \;'

Во-вторых, передайте это той же хэш-утилите на evn-web03, передав --checkи отфильтруйте все, что не идентично:

ssh evn-web04 'find  /www/web/prod/evn.tumo.lab -type f -exec md5sum {} \;' | \
ssh evn-web03 "md5sum --check - | grep -vE ': OK$'"

Это даст вам список файлов, которые:

  • существуют на evn-web04, но не существуют на evn-web03, или
  • существуют на evn-web04 и различаются между evn-web04 и evn-web03

Чтобы получить полный список различий, вам также необходимо изменить порядок серверов (поскольку в evn-web03 могут существовать файлы, которых нет в evn-web04, которые не будут восприняты как есть). Просто повторите те же команды, но поменяйте местами имена серверов.

Следующая строка будет делать:

diff <(find /path/to/dir -type f -exec su -c 'echo -n {}; md5sum {}' \;) \\
 <(ssh me@remote find /path/to/dir -type f -exec su -c 'echo -n {}; md5sum {}' \;)

Часто недооценивают, что такого рода задачи могут быть выполнены с помощью одной команды, благодаря замене процесса.

Моей первой мыслью было использовать

rsync ... --dry-run path user@remote:/path 

Со страницы руководства

-n, --dry-run               perform a trial run with no changes made

Rsync сообщит о любых файлах, которые отличаются

Другие вопросы по тегам