0

我正在尝试使用 cron 设置 mysql 数据库备份,以便将 mysql 数据库备份到我的本地 NAS 存储。我想将命令存储在服务器上的 .sh 文件中,然后使用 cron 执行它。

到目前为止,我已经设法从远程服务器获取将数据库保存到我的 NAS (QNAP) 的命令,即:

mysqldump 
--add-drop-table 
--comments [database_name] 
-u [database_username] 
-p[database_password] | 
gzip -c | 
ssh [nas_user]@[nas_ip_address] 
    "cat > /share/mysqlBackup/backup-`date +%Y-%m-%d_%H-%M-%S`.sql.gz"

以上工作正常,但我遇到的问题是:

  1. 我不确定如何在远程服务器上创建 .sh 文件并将命令放入

  2. 每次执行此命令时都会要求输入密码 - 有没有办法将其放入 .sh 文件中,以便我可以在后台执行而不提示它/或在命令中定义密码?

如何解决上述问题的示例将非常受欢迎。

我相信可以使用expect()对话框,但同样 - 我不熟悉它,它的文档对我来说有点混乱。

4

1 回答 1

2

我猜 ssh 连接需要密码,所以你可以让你的 ssh 连接无密码。

在答案中解释了无密码 ssh 连接: https ://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password

在远程服务器上完成此步骤后,您可以将上面给出的命令写入 .sh 文件中,这非常简单。并将其添加到 cron 以定期进行备份。

于 2013-01-12T17:16:05.013 回答