为什么 rsync 不能与 crontab 一起工作?

为什么 rsync 不能与 crontab 一起工作?

当我手动运行以下命令时,它运行完美:

/usr/bin/rsync -arvth -e "ssh -i /watch/scripts/word.pem" 1.1.1.1:/opt/ /opt

当它使用 crontab 运行时。我得到:

权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic、密码)。rsync:连接意外关闭(迄今为止已接收 0 字节)[接收器] rsync 错误:io.c(600) 处出现无法解释的错误(代码 255)[接收器=3.0.6]

我在这里遗漏了什么?

谢谢!Dotan。

答案1

Cron 不会在与交互式登录 shell 相同的环境中运行(具有相同的环境变量)。我猜这与此有关。

您可能在本地计算机上有一个 ssh 代理,您可以转发它来访问 1.1.1.1,或者您将其他内容设置为访问服务器所需的环境变量。

您可以通过在 cron 文件中设置来为 cron 设置环境变量:

VARIABLE=true
0 * * * * /usr/bin/rsync -arvth -e "ssh -i /watch/scripts/word.pem" 1.1.1.1:/opt/ /opt

答案2

似乎当您将 AMI(图像)从 Amazon 的一个区域复制到另一个区域并在新的 Amazon 区域启动实例时。authorized_keys 仅保留来自原始区域的证书(尽管创建了新证书)而不是新证书。所以您必须手动添加它。谢谢,Dotan。

相关内容