rsync/ssh/rsnapshot 备份--远程脚本执行

rsync/ssh/rsnapshot 备份--远程脚本执行

我的配置文件中有以下设置:(/etc/rsnapshot.conf)

脚本/工具:http://www.rsnapshot.org/

backup_script   ssh     [email protected] "sh /home/user/backup_mysql.sh"     ./mysql

该示例显示以下内容:

backup_script  ssh [email protected] "mysqldump -A > /var/db/dump/mysql.sql"    unused2

我收到的错误:

ERROR: backup_script /usr/bin/ssh returned 255  

我究竟做错了什么?

答案1

一种可能的方法是转换为脚本(do_ssh.sh,此处)并调用该脚本。ssh [email protected] "sh /home/user/backup_mysql.sh"

就像是,

备份脚本 /path/to/do_ssh.sh ./mysql

我还建议您尝试用引号括住整个命令。

备份脚本“ssh [电子邮件保护]“sh /home/user/backup_mysql.sh” ./mysql

答案2

rsnapshot 配置文件以制表符分隔。请确保tabs在 backup_scrip、ssh 命令和备份存储之间包含。如果这不起作用,请尝试运行rsnapshot configtest以找出问题。

答案已更新

将备份行转换为以下格式会更加方便:

 backup_script    /dir/yourscript.sh    backupdirectory/

将中间部分放入 shell 脚本中,使其可执行并测试。除此之外,还应以非交互方式无需密码即可连接到远程主机。ssh [email protected]

答案3

rsnapshot.conf示例实际上使用的是backup_exec,而不是backup_script。但是,backup_script仍然可以用于通过 ssh 运行任意命令并同步临时目录中生成的任何文件。使用的任何命令都必须通过绝对路径引用。这对我的一个 mysql 数据库有效:

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

答案4

您是否已经设置了与远程主机的密钥认证,或者 ssh 命令是否期望您以交互方式输入密码?

如果您尚未设置无密码身份验证,则 ssh 命令将无法进行身份验证,因此返回错误(255 似乎是任何错误的默认返回值)。

相关内容