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

rsync / ssh / rsnapshot backup - удаленное выполнение скрипта

В моем файле конфигурации есть следующие настройки: (/etc/rsnapshot.conf)

Скрипт / Инструмент: http://www.rsnapshot.org/

backup_script   ssh     root@host.domain.com "sh /home/user/backup_mysql.sh"     ./mysql

пример показывает следующее:

backup_script  ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql"    unused2

Я получаю ошибку:

ERROR: backup_script /usr/bin/ssh returned 255  

Что я делаю не так?

Файлы конфигурации rsnapshot разделены табуляцией. Убедитесь, что вы включили tabs между backup_scrip, командой ssh ​​и хранилищем резервных копий. Если это не сработает, попробуйте запустить rsnapshot configtest чтобы определить проблему.

Ответ обновлен

Удобнее преобразовать резервную строку в следующий формат:

 backup_script    /dir/yourscript.sh    backupdirectory/

Поместите средний раздел в сценарий оболочки, сделайте его исполняемым и протестируйте. В дополнение к этому ssh root@host.domain.com должен подключаться к удаленному хосту без пароля в неинтерактивном режиме.

В rsnapshot.conf пример фактически использует backup_execне backup_script. Тем не мение, backup_script по-прежнему можно использовать для запуска произвольных команд через ssh и синхронизации любых файлов, созданных во временном каталоге. Любые используемые команды должны иметь абсолютный путь. Это сработало для меня для одной из моих баз данных mysql:

backup_script [tab] /usr/bin/ssh user@example.com "/usr/bin/mysqldump --single-transaction -u username dbname" > dbname.sql [tab] example.com/mysql/

Проблема в ssh. На странице руководства ssh

ssh завершает работу со статусом выхода удаленной команды или с 255, если произошла ошибка

Вы должны использовать ssh -v [vv], чтобы получить подробный вывод от ssh и посмотреть, что он скажет.

Один из возможных способов - преобразовать ssh root@host.domain.com "sh /home/user/backup_mysql.sh" в сценарий (здесь do_ssh.sh) и вызовите этот сценарий.

Что-то вроде,

резервный_скрипт /path/to/do_ssh.sh ./mysql

Я также рекомендую вам попробовать заключить в кавычки всю вашу команду.

резервный_скрипт "ssh root@host.domain.com" sh /home/user/backup_mysql.sh "" ./mysql

Вы настроили аутентификацию по ключу с удаленным хостом, или команда ssh ожидает, что вы введете пароль в интерактивном режиме?

Если вы не настроили аутентификацию без пароля, тогда команда ssh не сможет пройти аутентификацию и, следовательно, вернет ошибку (255, по-видимому, является возвращаемым значением по умолчанию для любой ошибки).

У меня была аналогичная проблема, которую решили, убедившись, что там не были вкладки в скрипте «путь».

Вместо того

backup_script [tab] /bin/ssh [tab] root@host.com [tab] "/usr/bin/mysqldump -uroot --all-databases > ./mysqldump.sql" [tab] ./mysql/

пытаться

backup_script [tab] /bin/ssh root@host.com "/usr/bin/mysqldump -uroot --all-databases > ./mysqldump.sql" [tab] ./mysql/