使用密钥在crontab中运行rsync

时间:2016-09-12 23:32:50

标签: ssh crontab rsync

我在crontab中运行rysnc时遇到问题。它是我自己用户的crontab,因此它以我的用户身份运行,并且我设置了无密码的rsa密钥。当我在shell控制台上运行rsync作业时,它可以工作。但是当我将它导入crontab时,它表示它在/ var / log / syslog中运行,但是我没有看到该文件夹​​已同步。

我的crontab非常简单:

* * * * * rsync -av --delete myuser@mybox:/home/backup/ /home/backup

我认为crontab没有占用我的用户环境。如果我执行以下操作,我只能看到一些环境变量:

* * * * * env >> /tmp/my_env_variables

输出为cat /tmp/my_env_variables

LANGUAGE=en_US.UTF-8
HOME=/home/myuser
LOGNAME=myuser
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/myuser

我没有env变量,例如:

SSH_AUTH_SOCK=/tmp/ssh-uapL7nIOVj/agent.103170

在cron中导入我需要的env变量的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

来自man 5 crontab

  

crontab中的活动行是环境设置或cron命令。环境设置的格式为:

name = value

但是,当cron-job运行时,要求SSH代理始终存在,这将是不可靠的。如果你希望这个工作,你将需要一个无密码短语设置。您可以将服务器上的authorized_keys中的密钥限制为仅使用特定的IP地址。