我使用rsync备份我的本地设备上的远程服务器但是当我将它与cron作业结合时,我的ssh超时.为了清楚起见,数据存储在远程服务器上,我希望它存储在我的本地服务器上.必须将备份请求从本地服务器发送到远程服务器.
当我在终端中输入数据时,备份数据的命令正常工作:
rsync -chavzP --stats USERNAME@IPADDRES: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP
但是当我将它与这样的cron作业结合起来时:
10 11 * * * rsync -chavzP --stats USERNAME@IP_ADDRESS: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP
ssh连接超时.当cronjob执行它时,向root用户发送一封邮件,其输出如下:
From local.xx.xx.xx Tue Jul 2 11:20:17 2013 X-Original-To: username Delivered-To: username@username.local From: username@username.local (Cron Daemon) To: username@username.local Subject: Cron <username@server> rsync -chavzP --stats USERNAME@IPADDRES: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=username> X-Cron-Env: <USER=username> X-Cron-Env: <HOME=/Users/username> Date: Tue,2 Jul 2013 11:20:17 +0200 (CEST) ssh: connect to host IP_ADDRESS port XX: Operation timed out rsync: connection unexpectedly closed (0 bytes received so far) [receiver] rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [receiver=2.6.9]
所以rsync命令在刚刚输入终端时工作,但在cronjob使用时却没有.任何人都能解释一下吗?
解决方法
当您从cron运行命令时,它无法访问您的环境信息,就像从shell运行它一样.这意味着它找不到您的ssh密钥,或者您用于设置SSH代理的任何环境变量.
如果您使用的是无密码密钥,请将rsync行更改为:
rsync -chavzP -e "ssh -i /Users/username/.ssh/YOUR_PRIVATE_KEY_HERE" --stats USERNAME@IP_ADDRESS: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP