sersync + rsync 实现数据实时同步
1.简介
1.1、项目需求
文件服务器里的文件需要在另外一台服务器上进行同步备份,可以通过sersync + rsync 实现文件数据实时同步。
1.2、演示方案
服务器系统环境:CentOS Linux release 7.9.2009 (Core)
需求效果:源文件服务器/home/upload文件夹下的文件产生任何异动都将实时同步到备份服务器器/home/upload文件夹下。
服务器 | IP | 运行服务 | 同步路径 |
---|---|---|---|
源文件服务器 | 192.168.80.146 | sersync+rsync | /home/upload |
备份服务器 | 192.168.80.143 | rsync(守护进程) | /home/upload |
2、部署方案
2.1、备份服务器(192.168.80.143)
2.1.1、下载安装rsync
#安装rsync
yum install rsync -y
#单独创建一个系统用户给rsync用
useradd -M -s /sbin/nologin rsync
#定义rsync的服务用户和密码 用户名backup 密码 pass
echo "backup:pass" > /etc/rsync.passwd
#授权,这个必须是 660 的权限才行
chmod 600 /etc/rsync.passwd
#创建备份目录并且授权属主
mkdir -p /home/upload
chown -R rsync:rsync /home/upload
#修改配置文件
vim /etc/rsyncd.conf
2.1.2、修改配置文件/etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 500
timeout = 600
ignore errors
read only = false
list = false
auth users = backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsync.log
[tongbu]
comment = welcome!
path = /home/upload
2.1.3、重启rsync服务
#重启rsync服务
systemctl restart rsyncd
#设置开机自启动
systemctl enable rsyncd
2.2、源目录服务器(192.168.80.146)
2.2.1、下载安装
#安装rsync
yum -y install rsync epel-release
yum -y install inotify-tools
#安装sersync
wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
#解压文件包
tar -xvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /var/local/
mv /var/local/GNU-Linux-x86 /var/local/sersync
#修改配置文件
vim /var/local/sersync/confxml.xml
2.2.2、修改配置文件内容/var/local/sersync/confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="true"/> <!--xfs改成true-->
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify><!--inotify内容全部改成true-->
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
<sersync>
<!--监听本地异动的的文件目录-->
<localpath watch="/home/upload">
<!--备份文件服务器的地址,和它的服务名/etc/rsyncd.conf 里“[tongbu]”-->
<remote ip="192.168.80.143" name="tongbu"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<!--参数改成"-az"-->
<commonParams params="-az"/>
<!--设置rsync的账号,和密码文件信息-->
<auth start="true" users="backup" passwordfile="/etc/rsync.passwd"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="true" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
<plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
</head>
2.2.3、启动配置
#注意,这里直接填写密码就可以了
echo pass > /etc/rsync.passwd
#注意权限问题,密码文件必须是600权限
chmod 600 /etc/rsync.passwd
#启动
/var/local/sersync/sersync2 -dro /var/local/sersync/confxml.xml
#设置开机自启动生效
chmod +x /etc/rc.d/rc.local
#添加开机自启动项
echo "nohup /var/local/sersync/sersync2 -r -d -o /var/local/sersync/confxml.xml > /var/local/sersync/sersync.log 2>&1 &" >> /etc/rc.local