一键部署sersync+rsync,实现rsync服务端与sersync同步

自己设计了个小实验,一键部署sersync和rsync,实现sersync实时备份数据到rsync,把过程记录下来,以后有需要可以参考,正所谓好记性不如烂笔头。
规划:
管理服务器m01:172.16.1.61
sersync服务器:172.16.1.31
rsync服务器:172.16.1.41
整个过程涉及以下几个脚本:
1、fenfagongyao.sh:用秘钥认证代替密码;
2、rsync_ser.sh:服务端自动部署rsync;
3、sersync.sh:部署sersync;
4、yijian_rsync.sh:执行上述脚本。
思路:在m01管理服务器把各个目标服务器需要的脚本编写好,用ansible的copy模块将脚本和服务文件发到各个对应的远程主机上,再在m01执行ansible命令即可将目标服务器上的脚本执行自动部署。
各个脚本的内容如下:
1、fenfagongyao.sh:
#!/bin/bash
ssh-keygen -f ~/.ssh/id_rsa -P ‘’ -q
for ip in 31 41
do
sshpass -p 1qaz@wsx ssh-copy-id -i ~/.ssh/id_rsa.pub “-o
StrictHostKeyChecking=no” 172.16.1.$ip
done

2、rsync_ser.sh:
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
yum -y install rsync
useradd rsync
mkdir -p /backup/
chown -R rsync.rsync /backup/
cat >/etc/rsyncd.conf < uid = rsync
uid = rsync
gid = rsync
use chroot = no
fake super = yes
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/16
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup/
EOF
systemctl start rsyncd
systemctl enable rsyncd
echo “rsync_backup:123456” > /etc/rsync.password
chmod 600 /etc/rsync.password

3、sersync.sh:
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
echo “123456” > /etc/rsync.password
chmod 600 /etc/rsync.password
mkdir /backup
cd /application
/application/sersync2 -d

4、yijian_rsync.sh:
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#一键拷贝公钥到远程服务器rsync和sersync上
/usr/bin/sh /server/scripts/rsync/fenfagongyao.sh
#拷贝rsync服务执行脚本,group1模块放的是rsync服务器的IP地址
ansible group1 -m copy -a “src=/server/scripts/rsync/rsync_ser.sh dest=/server/scripts/rsync/ mode=711”
#拷贝sersync服务执行脚本,group2模块放的是sersync服务器的IP地址
ansible group2 -m copy -a “src=/server/scripts/rsync/sersync.sh dest=/server/scripts/rsync/ mode=711”
#拷贝sersync配置文件和服务文件
ansible group2 -m copy -a “src=~/rsync/confxml.xml dest=/application/”
ansible group2 -m copy -a “src=~/rsync/sersync2 dest=/application/ mode=511”
#远程执行rsync服务和sersync服务
ansible group1 -m shell -a “sh /server/scripts/rsync/sersync.sh”
ansible group2 -m shell -a “sh /server/scripts/rsync/rsync_ser.sh”

注意:在把sersync传输之前,先在本地配置好配置文件confxml.xml,主要是以下几处:
一键部署sersync+rsync,实现rsync服务端与sersync同步_第1张图片
一键部署sersync+rsync,实现rsync服务端与sersync同步_第2张图片
最后,只需要在m01服务器上执行sh yijian_rsync.sh,就可以快速部署好rsync和sersync,sersync的/backup目录被实时监控,一旦有变化,立即同步到rsync上的/backup目录下。
补充说明:此处用的是ansible的shell模块,在本地使用shell模块执行远端的脚本的时候,远端设备上需要存在脚本,如果不想事先用copy模块把脚本拷贝到远端,可以用script模块执行,script模块可以实现在远端执行本地脚本,如:
ansible group1 -m script -a “/server/scripts/rsync/sersync.sh”
但是有一点需要注意,执行脚本依赖于环境变量,如果脚本需要的环境变量远端主机没有具备,则会执行失败。

你可能感兴趣的:(linux,rsync)