服务器端配置:
1.配置rsync配置文件
#vim /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873
address = 0.0.0.0
uid =root
gid = root
use chroot = yes
read only = yes
hosts allow = 10.11.4.66
max connections = 4
timeout = 300
[maven]
path = /data/maven_workDir
list = no
ignore errors
secrets file = /etc/rsyncd.secrets
2.配置客户端同步使用的账号密码
#vim /etc/rsyncd.secrets
maven:centrald
3.设置账号密码文件权限为600
#chmod 600 /etc/rsyncd.secrets
4.启动rsync服务
# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
客户端配置
1.同步脚本
vim maven_backup.sh
#!/bin/bash
host=10.17.32.167
backing_flag_file="/tmp/maven_backup_flag"
startTime=`date`
echo "====================开始同步,当前时间为${startTime}===================="
# 同步过程中会创建一个标记文件,标记正在同步,同步结束后删除文件,如果该文件存在,说明当前正在rsync中
if [ -f $backing_flag_file ];then
echo "上次同步未结束,不开始本次同步"
exit 1
else
# 创建标记文件
touch $backing_flag_file
if [ $? -eq 0 ];then
rsync -avW mapp@${host}::maven/ /data/maven_workDir --delete --password-file=/etc/rsync.pass
else
echo "创建标记文件失败"
fi
# 同步结束,删除标记文件
rm -f $backing_flag_file
fi
endTime=`date`
echo "====================结束同步,当前时间为${endTime}===================="
2.配置同步客户端密码(这样可以使用crontable进行自动同步)
# vim /etc/rsync.pass
centrald
3.contable中设置定时同步
#crontable -e
*/10 * * * * /bin/bash /root/maven_backup.sh &>> /tmp/maven_backup.log
服务端推送到客户端同步方式:
会出现这种情况,A 机器需要同步数据到 B机器,但是网络有做隔离,B不能去A 机器拉取数据,所以只能采取A推送数据的方式。就相当于rsync服务器端推送数据到客户端。那么同步脚本如下:
#!/bin/bash
host=10.50.16.21
backing_flag_file="/tmp/maven_backup_flag2"
startTime=`date`
echo "====================开始同步,当前时间为${startTime}===================="
# 同步过程中会创建一个标记文件,标记正在同步,同步结束后删除文件,如果该文件存在,说明当前正在rsync中
if [ -f $backing_flag_file ];then
echo "上次同步未结束,不开始本次同步"
exit 1
else
# 创建标记文件
touch $backing_flag_file
if [ $? -eq 0 ];then
rsync -avW /data/maven_workDir root@${host}::maven/ --delete --password-file=/etc/rsync.pass
else
echo "创建标记文件失败"
fi
# 同步结束,删除标记文件
rm -f $backing_flag_file
fi
endTime=`date`
echo "====================结束同步,当前时间为${endTime}===================="