前提:A机器每个半小时同步指定目录的文件到B机器,且A机器已经将公钥拷贝到B机器,可以实现ssh免密登录。
简介:定时每半小时执行一次脚本,脚本会检测rsync是否同步指定目录的文件,若rsync进行在,则跳过,否则执行rsync命令
问题:定时任务执行时,脚本前后所有指令都执行成功,除了rsync这条命,且无报错(注:单独在命令行sh执行该脚本,可以正确执行rsync)
排错:在定时任务中添加脚本调试模式,并把错误重定向成文件(*/30 * * * * root /bin/bash -x rsync-test.sh > /tmp/rsync.log 2>&1),在rsync.log中可以看到错误提示,说host认证失败(明明已经做好主机信任,实现免密登录)
解决:按错误提示进行搜索并尝试使用网上提供的方法进行解决,都失败了。无奈,只能尝试使用rsync另一种免密传输的方式,具体配置可以参考 rsync实现免密码操作的一种实现方式 (文章随便找的,就是用rsync --daemon的方式)。成功在定时任务中执行该rsync脚本。
注意:使用rsync --daemon的方式时,客户端和服务端的密码文件权限必须设置为600
chmod 600 /etc/rsyncd.passwd
原始脚本如下ÿ