同步原理:
1. 用户实时的往sersync服务器上写入更新文件数据;
2. 此时需要在源数据服务器上配置sersync服务;
3. 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;
通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器
实验需求需要两台主机或更多
安装所需要的服务:yum -y install rsync httpd
编辑配置文件:vim /etc/rsync.conf
uid = root
gid = root
use chroot = yes
max connections = 100
#最大连接数 timeout = 600
#超时时间 ignore errors #忽略错误
list = false #不显示服务端资源列表
address = 192.168.200.111 监听的ip地址
port = 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.200.0/24
[wwwroot]
path = /var/www/html
comment = Document Root os www.crushlinux.com
read only = no # 允许读写
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper
secrets file = /etc/rsyncd_users.db
创建账户密码文件设置密码:
vim /etc/rsyncd_users.db
backuper:pwd123
调整权限
chmod 600 /etc/rsyncd_users.db
chmod 777 /var/www/html/
查看权限:ls -ld /var/www/html/
启动服务并监听
第二台设置免密交互,创建密码文件,指定文件
echo "pwd123" > /etc/server.pass
chmod 600 /etc/server.pass 密码文件必须设置为600权限
rsync -rz --delete --password-file=/etc/server.pass /etc/hosts backuper@192.168.200.111::wwwroot
文件上传成功第一台查看: ls /var/www/html/
#测试这步一定要成功,不然进行不了下一步
部署Serync服务
下载Serync:goodle code地址 : https://code.google.com/archive/p/sersync/downloads
Git Hub 镜像地址 : https://github.com/orangle/sersync
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/ //解压缩文件
cd /usr/local/ //切换目录
ls //查看目录文件
mv GNU-Linux-x86/ sersync //更改文件名为Serync
cd sersync/ //切换目录server
cp confxml.xml confxml.xml.$(date +%F) //备份文件后面加时间.$(date +%F)
修改文件:vim confxml.xm //修改本地目录服务器地址和rsync模块地址
<sersync>
<localpath watch="/var/www/html"> # 本地同步目录
<remote ip="192.168.200.111" name="wwwroot"/> #服务器地址和 rsync模块名
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="backuper" passwordfile="/etc/server.pass"/> //指定用户名和密码文件
在Serync目录中开启sersync守护进程 同步数据:./sersync2 -d -r -o /usr/local/sersync/confxml.xml
测试同步添加数据: cd /var/www/html/ //切换目录
ls //查看目录文件
mkdir benet //创建文件benet
cd benet //切换目录benet
touch {1..5}.txt //写入数据
ls -l //查看数据
查看第一台主机是否同步数据:ls /var/www/html/
ls -l /var/www/html/benet/
重启Serync进程 先杀死进程在启动:cd /usr/local/serync2
killall serync2
./sersync2 -d -r -o /usr/local/sersync/confxml.xml