实时复制实践:
前提:backup rsync服务端部署好。
1)部署NFS客户端
echo 'export RSYNC_PASSWORD=密码' >>/etc/bashrc##将rsync的密码生成变量追加到bashrc中
source /etc/bashrc##刷新bashrc
echo $RSYNC_PASSWORD##检查变量是否生成
rsync -avz /data [email protected]::backup/##测试推送
inotify实时同步
1)查看inotify支持情况
uname -r
3.10.0-957.5.1.el7.x86_64
ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 4月 19 09:45 max_queued_events
-rw-r--r-- 1 root root 0 4月 19 09:45 max_user_instances
-rw-r--r-- 1 root root 0 4月 19 09:45 max_user_watches
2)安装inotify-tools
yum install epel-release -y
yum install inotify-tools -y
3)参数
inotifywait
-m 监听 -r 递归监视目录 -d 变为守护进程 -q 简化输出 -e监听哪些事件 --format 监听的
监听参数
close_write 文件的增与改 delete 文件的删除 move 文件的移动
4)测试实践
监控哪些事件?
增 改 删 需要监控
inotifywait -mrq --format '%w%f' -e close_write,delete /data
5)编写脚本
#!/bin/bash
export RSYNC_PASSWORD=123456 ##定义rsync匿名用户的密码文件
A =/usr/bin/inotifywait##定义变量inotifywait的全路径
$A -mrq --format '%w%f' -e close_write,delete /data && | \ ##监听data目录的增删改并将结果交给while循环
while read B ##while将上面的监听结果赋值给B
do
[ ! -e "$B" ] && cd /data && \## 判断变量B文件如果不存在继续执行如果存在则执行第二条
rsync -az --delete ./ [email protected]::backup && | continue##如果文件不存在则切换到data目录下并对目录下的所有内容做增量同步
rsync -az --delete $B [email protected]::backup##如果文件存在则把被修改的文件增量同步
done##结束
6)把脚本放入后台守护执行
/bin/bash /server/scripts/inotifywait &
sersync实时同步
下载路径
wget https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
安装包统一放在/server/tools目录下
安装包解压到 /application/
tree /application/##检查
/application/
└── sersync
├── bin
│ └── sersync
├── conf
│ ├── confxml.xml
│ └── confxml.xml.ori
├── logs
│ └── rsync_fail_log.sh
└── readme.txt
4 directories, 5 files
vim /application/sersync/conf/confxml.xml##sersync的配置文件
4)启动服务
/application/sersync/bin/sersync -d -n 10 -o /application/sersync/conf/confxml.xml##命令行启动
/application/sersync/bin/sersync -d##简化
pkill sersync##关闭服务
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
vim /etc/rc.local
/application/sersync/bin/sersync -d##设为开机自启
配置:systemctl start sersync启动方案
配置:systemctl start sersync启动方案
vim /etc/rc.d/init.d/sersync
#!/bin/bash
# chkconfig: 2345 21 81
# description: rsync service start and stop scripts
# Author: oldboy
# Organization: www.oldboyedu.com
start(){
/application/sersync/bin/sersync -d -o /application/sersync/conf/confxml.xml &>/dev/null
}
stop(){
killall sersync 2>/dev/null
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
*)
echo $"Usage:$0 {start|stop|restart}"
exit 1
esac
chmod +x /etc/rc.d/init.d/sersync ## 给修改的文件加执行权限
vim /usr/lib/systemd/system/sersync.service
[Unit]
Description=sersyncd service
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/sersync start
ExecReload=/etc/rc.d/init.d/sersync restart
ExecStop=/etc/rc.d/init.d/sersync stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod +x /usr/lib/systemd/system/sersync.service ## 给修改的文件加执行权限