Я пытаюсь запустить rsync через удаленное соединение с Asustor NAS на моем сервере Ubuntu. Команду с NAS невозможно изменить, так как она запускается из веб-интерфейса. Но я знаю, какая команда запускается, и могу проверить ее вручную, что приводит к ошибке. Это выглядит примерно так, когда я запускаю ее с NAS:
$ /usr/builtin/bin/rsync -e "/usr/bin/ssh -l ssh-user-on-my-server -p 12345" --progress -a --timeout=60 rsync://[email protected]:873/rsync-module
[email protected]'s password:
rsync: server sent "2017/01/17 19:38:58 [6920] connect from xxx-xxx-xxx-xxx-url-to-the-nas.com (xxx.xxx.xxx.xxx)" rather than greeting
rsync error: error starting client-server protocol (code 5) at /asustor/branch2_6_2016_09_22/x64_g1/source/rsync-3.0.9/main.c(1649) [Receiver=3.0.9]
Я случайно заметил, что сообщение выше выглядит точно так же, как формат журнала от rsyncd. Это пример вывода от rsyncd при запуске rsync с NAS на моем сервере Ubuntu без SSH:
2017/01/06 23:42:13 [5979] connect from xxx-xxx-xxx-xxx-url-to-the-nas.com (xxx.xxx.xxx.xxx)
2017/01/06 22:42:13 [5979] rsync on rsync-module/ from [email protected] (xxx.xxx.xxx.xxx)
2017/01/06 22:42:13 [5979] building file list
2017/01/06 22:42:14 [5979] sent 172 bytes received 24 bytes total size
Я проверил, что и SSH, и rsync работают по отдельности, эта проблема возникает только тогда, когда я пытаюсь запустить скрипт, то есть rsync, через подключение к удаленной оболочке.
Это очень похоже наRsync с ssh и root не работает после смены IP-адреса хоста, но проблема была в приветственном сообщении от .bashrc
.
решение1
Я сам нашел ответ. Как я уже сказал, вывод, на который жаловался rsync, выглядел точно так же, как и журнал rsync. Проблема была в моем rsyncd.conf
. Я начал этот проект, построив docker для службы rsync. Чтобы получить обратную связь от моего docker, я добавил следующую строку в свой файл конфигурации: log file = /dev/stdout
. Демон rsync вывел журнал напрямую в stdout
!