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

今天在测试cron定时任务实现rsync自动备份时,先将以下命令写入脚本~/etc_backup.sh:

#!/bin/bash
rsync -avz /etc rsync_backup@172.16.1.41::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 rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
即可实现定时备份。

原因分析:我在设置rsync客户端密码文件时,使用:

echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc 

设置了环境变量,所以在命令行界面实现手动备份时,可以省略密码:

[root@nfs ~]#rsync -avz /etc rsync_backup@172.16.1.41::backup

但是写进脚本时,由于脚本执行没有自动检查环境变量,所以无法获取到服务端的密码,这才导致无法备份成功,后来加了–password-file=/etc/rsync.password指定密码文件后,即可执行成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值