Назад | Перейти на главную страницу

Скрипт для определения различий между локальной и удаленной файловыми системами по SSH

Я ищу сценарий, чтобы узнать разницу между локальной и удаленной файловыми системами (через SSH). В идеале скрипт должен делать следующее:
-поиск папок в локальной файловой системе
-узнать, присутствует ли папка в удаленной файловой системе (сообщить об отсутствии и прекратить дальнейшее изучение папки)
-для папок, присутствующих в обеих файловых системах, выполните различие файлов, которые они содержат (сообщить, отсутствует ли удаленный файл или нет).

Единственное, что я смог найти в serverfault, - это пример того, как делать различия в отдельных файлах и папках:
Как сравнить различия между каталогами (linux)
Как сделать разницу по ssh?

Скрипт может быть написан на любом языке, на данном этапе это не имеет значения (хотя предпочтительнее bash / perl).

rsync с --dry-run и -v параметры сообщат о файлах и каталогах, присутствуют ли они на удаленной стороне, а также обнаружат различия в файлах (с помощью контрольной суммы). В сети есть множество документации о как заставить его работать через SSH.

Если вы предпочитаете другой подход, вы можете смонтировать удаленный каталог локально, используя ПРЕДОХРАНИТЕЛЬ / SSHfs и используйте любой набор инструментов, который будет работать локально.

Одно ужасное простое решение, которое делает почти все, что вы хотите, но не прекращает спускаться в папки, несуществующие на цели, - это использовать rsync с проверкой контрольной суммы, выполняющей --dry-run:

rsync -av -c --dry-run source/ user@target:/target/