简介
Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件
rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但是rsync不能实时的去监测、同步数据
原理
Inotify只需要要按照部署在同步的客户端,当监控的文件有变化触动 rsync脚本来同步
准备两个CentOS 7机器
192.168.26.128
192.168.26.129
1、安装EPEL
yum -y install epel-release
2、安装inotify和rsync服务
yum -y install inotify-tools rsync
3、修改rsync的配置文件
vim /etc/rsyncd.conf
内容如下:
uid=root
gid=root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[mysqldata]
path = /data/mysqldata
comment = mysql data
ignore errors
read only = no
write only = no
hosts allow = 192.168.26.129
list = false
auth users = rsync_user
secrets file = /etc/rsync.password
4、创建目录
mkdir -p /data/mysqldata
5、建立rsync用户名和密码文件,加权限
echo "rsync_user:rsync_user_pwd" > /etc/rsync.password
chmod -R 600 /etc/rsync.password
6、启动服务,验证端口
rsync --daemon
netstat -nlupt|grep 873
7、安装EPEL
yum -y install epel-release
8、B服务器安装inotify和rsync服务
yum -y install inotify-tools rsync
9、设置客户端密码文件,修改权限
echo "rsync_user_pwd" > /etc/rsync.password
chmod -R 600 /etc/rsync.password
10、编写脚本监控
vim jianko.sh
内容如下:
#!/bin/bash
ip=192.168.112.153
src=/data/mysqldata_src/
dst=mysqldata
user=rsync_user
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} \
| while read file
do
rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd"
done
注意点:第6行的路径,yum安装的是/usr/bin/inotifywait
源码安装的是/usr/local/bin/inotifywait
还有就是src的路径需要创建!!!
路径验证没有如下文件证明不对
ll /usr/bin/inotifywait
11 、创建目录
mkdir -p /data/mysqldata_src
12、执行脚本
sh jiankong.sh
13、进入相应的目录下创建文件
cd /data/mysqldata_src
touch a.txt
14、到A服务器上验证
cd /data/mysqkldata
ls