Использовать lsyncd для обновления локальной папки с удаленного источника?

Я использовал lsyncd для синхронизации локальной папки с сервером, которым я владею, используя rsyncssh с файлом конфигурации, например так:

settings = {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
        default.rsyncssh,
        source = "/Users/user/source",
        host = "root@xxx.xxx.xxx.xxx",
        targetdir = "/tmp/data",
        rsync = { binary = "/usr/local/bin/rsync" }
} 

Теперь я хочу выполнить "вытягивание" для синхронизации локального каталога на другом компьютере (в другой сети) с этим удаленным сервером.

Я использую этот файл конфигурации:

settings = {...}
sync {
        default.rsync,
        source = "root@xxx.xxx.xxx.xxx:/tmp/data",
        target = "/home/user/dest",
        rsync = { binary = "/usr/local/bin/rsync", _extra = { "-P", "-e", "ssh" } }
}

но я получил эту ошибку:

Error: failure getting absolute path of [root@xxx.xxx.xxx.xxx:/tmp/data]
Error: Cannot access source directory: root@xxx.xxx.xxx.xxx:/tmp/data

Конечно / tmp / data существует, любой намек на то, что я делаю не так?

Знаете ли вы, возможно ли использовать lsyncd с rsync так, как я его использую, чтобы поддерживать локальную папку "актуальной" с удаленным источником? Или я могу использовать rsyncssh с удаленным источником?

Спасибо!

1 ответ

lsyncd не может этого сделать, потому что он не спроектирован таким образом. Он предназначен для использования событий inotify для мониторинга каталога, а затем запускает rsync для выполнения тяжелой работы. inotify по своей сути является локальной концепцией, а lsync фактически не выполняет никаких сетевых коммуникаций.

Вам нужно запустить на сервере службу lsyncd, которая запустит rsync, настроенный для подключения к вашему клиентскому компьютеру.

Это означает, что вам нужно настроить ssh-сервер на локальном компьютере. Если ваша машина не имеет подходящего доменного имени /IP-адреса или находится за NAT или брандмауэром, вам необходимо настроить ssh -R Обратный туннель и маршрутизация вашего сервера к клиенту rsync через это.

Как только он будет настроен, он будет работать, но, честно говоря, вы можете обнаружить, что проще использовать SyncThing.

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