【问题标题】:ssh mysqldump to remote nas storage with cron storing command(s) in .sh filessh mysqldump到远程nas存储,cron在.sh文件中存储命令
【发布时间】:2013-01-13 01:16:05
【问题描述】:

我正在尝试使用 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. 中的命令
  3. 此命令每次您都要求输入密码 执行它 - 有没有办法把它放在 .sh 文件中,这样我就可以 在后台执行而不提示它/或定义 命令中的密码?

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

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

【问题讨论】:

    标签: linux ssh mysqldump


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢 deniz,但是我在创建这些 rsa 密钥时遇到了困难 - 当我键入 ssh-keygen 时,我得到“没有这样的文件或目录”。有什么想法吗?
    • 好的 - 我摆脱了错误。我已经设法生成密钥并将它们复制到 NAS 并且一切正常,但现在它要求输入密码 - 因为我已经设置了一个 - 否则它不会真的那么安全。因此,我发现使用“无密码”选项并不理想。知道如何使用 expect() 对话框吗?
    猜你喜欢
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    相关资源
    最近更新 更多