使用 ssh 连接进行 rsync 备份的 Crontab

使用 ssh 连接进行 rsync 备份的 Crontab

UBUNTU 16.04 根服务器。

我想让 crontab 任务每天晚上 2:14 运行 rsync 备份任务。它将“文件夹”从 Ubuntu 16.04 机器复制到互联网上的另一台根服务器。可以使用 ssh 密钥登录建立 ssh 连接。

以下命令在终端中起作用:

/usr/bin/rsync -az --delete -e ssh /home/用户/文件夹/[电子邮件保护]:/home/用户/文件夹

但是以下 crontab 作业不起作用:

14 2 * * * /usr/bin/rsync -az --delete -e ssh /home/用户/文件夹/[电子邮件保护]:/home/用户/文件夹

说实话,我很难使用 crontab。如果这个任务真的能完成,我总觉得这是一种幸运的情况。

有人能从上面的 crontab 作业中看出我做错了什么吗?

你好,克里斯

答案1

我遇到的问题是 ssh 连接主机密钥验证失败。

我在 root 的 crontab 上运行了 cronjob。(我通过“sudo crontab -e”添加了 cronjob。)

14 2 * * * /usr/bin/rsync -az --delete -e ssh /home/用户/文件夹/[电子邮件保护]:/home/用户/文件夹

看起来 ssh 连接是由 root 用户建立的,而不是由“用户”建立的。

因此连接尝试实际上是:

远程控制[电子邮件保护]

并不是

远程控制[电子邮件保护]

所以我将 cronjob 添加到了“用户”的 crontab 中。(crontab -e(不带 sudo))。

现在主机密钥验证工作正常并且 crontab rsync 作业已正确执行。

我不知道上述假设是否正确,但这解决了这个问题。

我希望这个帖子在某个阶段也能帮助其他人。

你好,克里斯

答案2

除了以您正在使用的用户身份运行 crontab -e 之外,您还必须创建一个没有密码的公钥。

相关内容