В моем файле конфигурации есть следующие настройки: (/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/