在cron中运行rsync不起作用。 Mac Os x服务器和Linux Centos之间的Rsync

当在terminal上手动运行时,我在Mac OS X Server和Linux Centos之间有一个可用的rsync设置。

我inputrsync命令,它要求密码,我input并closures它,运行并完成。

现在我知道这个工作,我着手通过cron完全自动化。

首先,我通过在Mac服务器上运行这个命令来创buildSSH授权密钥:

ssh-keygen -t dsa -b 1024 -f /Users/admin/Documents/Backup/rsync-key 

input密码,然后确认。 然后,我将rsync-key.pub文件复制到linux服务器,并放置在rsync用户.ssh文件夹中,并重命名为authorized_keys:

 /home/philosophy/.ssh/authorized_keys 

然后我确定文件夹chmod 700中的authorized_keys文件是chmod 600。

然后,我为cron设置一个shell脚本来运行:

 #!/bin/bash RSYNC=/usr/bin/rsync SSH=/usr/bin/ssh KEY=/Users/admin/Documents/Backup/rsync-key RUSER=philosophy RHOST=example.com RPATH=data/ LPATH="/Volumes/G Technology G Speed eS/Backup" $RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH 

然后给shell文件执行权限,然后使用crontab -e将以下内容添加到crontab:

 29 12 * * * /Users/admin/Documents/Backup/backup.sh 

上面的命令运行后,我检查我的crontab日志文件,我得到这个日志,没有别的:

 Feb 21 12:29:00 fileserver /usr/sbin/cron[80598]: (admin) CMD (/Users/admin/Documents/Backup/backup.sh) 

所以我认为所有事情都应该如此。 但是,当我检查远程服务器没有文件已被复制。

如果我正常运行backup.sh文件在terminal,它仍然会提示input密码,但这次是通过Mac Key链系统,而不是input到控制台窗口。 随着Mac的钥匙链,我可以将其设置为保存密码,以便它不再要求它,但我确定当用cron运行这个密码没有拿起。

这是我在哪里罗斯在cron rsync失败,因为它需要一个密码来连接,但我认为使SSH密钥的整个想法是防止使用密码。 我错过了一个步骤或在这里做错了什么?

谢谢

斯科特

您可以创build没有密码的密钥,只要按回车就可以得到没有设置密码的密钥。 仅将此密钥用于可信的内部连接。

然后使用这个密钥与cron应该工作。