cron定时任务实现rsync备份时执行不成功的原因

今天在测试cron定时任务实现rsync自动备份时,先将以下命令写入脚本~/etc_backup.sh:
#!/bin/bash
rsync -avz /etc [email protected]::backup
然后执行crontab -e命令,在里面添加如下命令,设置每3分钟定时执行etc_backup.sh脚本,实现备份:
*3/ * * * * /usr/bin/sh ~/etc_backup.sh
3分钟后,发现rsync服务端备份目录里没有接收到数据,查看客户端的日志文件/etc/log/cron,确实执行了脚本,为了排除是cron的问题,利用ls来测试:
#!/bin/bash
ls -l /etc > ~/test.txt
然后在crontab -e里添加:
*/3 * * * * /usr/bin/sh ~/test.sh
时间一到,查看~/test.txt文件,得到预期结果,确定cron没有问题,问题应该出在etc_backup.sh脚本,再仔细看脚本里的命令,发现省略了–password-file=/etc/rsync.password文件所致,于是把脚本文件命令改成:
rsync -avz /etc [email protected]::backup --password-file=/etc/rsync.password即可实现定时备份。
**原因分析:**我在设置rsync客户端密码文件时,使用:
echo ‘export RSYNC_PASSWORD=oldboy’ >>/etc/bashrc
设置了环境变量,所以在命令行界面实现手动备份时,可以省略密码:
[root@nfs ~]#rsync -avz /etc [email protected]::backup
但是写进脚本时,由于脚本执行没有自动检查环境变量,所以无法获取到服务端的密码,这才导致无法备份成功,后来加了–password-file=/etc/rsync.password指定密码文件后,即可执行成功。

发布了15 篇原创文章 · 获赞 10 · 访问量 1246

猜你喜欢

转载自blog.csdn.net/ygh3110001606/article/details/104169408