Rsync over ssh, чудово працює щоразу.
Однак спроба rsync до хоста, який дозволяє лише sftp входи, але не ssh логін, дає таку помилку:
rsync -av / source ssh user @ remotehost: / target /
невідповідність версії протоколу - чи ваша оболонка чиста? (для пояснення див. сторінку "rsync man" для пояснення) Помилка rsync: несумісність протоколу (код 2) на compat.c (171) [sender = 3.0.6]
Ось відповідний розділ зі сторінки чоловіка rsync:
Це повідомлення зазвичай спричинене вашими сценаріями запуску або віддаленим пристроєм оболонки, що виробляє небажане сміття в потоці, який rsync використовує для свого транспортування. Спосіб діагностування цієї проблеми полягає у запуску віддаленої оболонки так:
ssh remotehost /bin/true > out.dat
потім подивіться на out.dat. Якщо все працює правильно, то out.dat повинен бути файлом нульової довжини. Якщо ви отримуєте вищезгадану помилку від rsync, ви, ймовірно, виявите, що out.dat містить текст чи дані. Подивіться на вміст і спробуйте розробити те, що його виробляє. Найпоширенішою причиною є неправильно налаштовані сценарії запуску оболонки (наприклад, .cshrc або .profile), які містять вихідні оператори для неінтерактивних входів.
Спробувавши це в моїй системі, було створено наступне в out.dat:
ssh-dummy-shell: Команда не дозволена.
Як я думав, хост не дозволяє входити в ssh.
Наведене нижче посилання показує, що це завдання можна виконати за допомогою запобіжника з sshfs - проте воно надзвичайно повільне і не придатне для використання у виробництві.
Чи є шанс змусити rsync sftp працювати?
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
Дивіться цю відповідь .
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port