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 之外,您还必须创建一个没有密码的公钥。