Я ищу сценарий, чтобы узнать разницу между локальной и удаленной файловыми системами (через SSH). В идеале скрипт должен делать следующее:
-поиск папок в локальной файловой системе
-узнать, присутствует ли папка в удаленной файловой системе (сообщить об отсутствии и прекратить дальнейшее изучение папки)
-для папок, присутствующих в обеих файловых системах, выполните различие файлов, которые они содержат (сообщить, отсутствует ли удаленный файл или нет).
Единственное, что я смог найти в serverfault, - это пример того, как делать различия в отдельных файлах и папках:
Как сравнить различия между каталогами (linux)
Как сделать разницу по ssh?
Скрипт может быть написан на любом языке, на данном этапе это не имеет значения (хотя предпочтительнее bash / perl).
rsync
с --dry-run
и -v
параметры сообщат о файлах и каталогах, присутствуют ли они на удаленной стороне, а также обнаружат различия в файлах (с помощью контрольной суммы). В сети есть множество документации о как заставить его работать через SSH.
Если вы предпочитаете другой подход, вы можете смонтировать удаленный каталог локально, используя ПРЕДОХРАНИТЕЛЬ / SSHfs и используйте любой набор инструментов, который будет работать локально.
Одно ужасное простое решение, которое делает почти все, что вы хотите, но не прекращает спускаться в папки, несуществующие на цели, - это использовать rsync
с проверкой контрольной суммы, выполняющей --dry-run
:
rsync -av -c --dry-run source/ user@target:/target/