2016-09-12 87 views
0

我遇到在我的crontab中運行rysnc的問題。這是我自己的用戶的crontab,因此它以我的用戶身份運行,並且我設置了無密碼的rsa密鑰。當我在我的shell控制檯上運行rsync作業時,它可以工作。但是,當我將它導入到crontab中時,它說它運行在/ var/log/syslog中,但我沒有看到同步的文件夾。使用密鑰在crontab中運行rsync

我的crontab是超級簡單:

* * * * * rsync -av --delete [email protected]:/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變量的正確方法是什麼?

+0

Stackoverflow是用於軟件開發的幫助。這至少在主題上幾乎沒有。你應該考慮在[unix.se]或[su]而不是這裏詢問這個問題。 – Kenster

回答

0

man 5 crontab

在一個crontab有源行是環境設置或cron命令。環境設置的格式爲:

name = value 

然而,需要SSH代理,一個cron作業運行將是不可靠的時候要始終存在。如果你想要這個工作,你將需要一個無密碼的密鑰設置。您可以在服務器上的authorized_keys中限制該密鑰只能從特定IP地址使用。