inotify+rsync实时备份
环境准备
centos7两台,关闭防火墙和selinux
A 备份端——192.168.74.190 【服务端】
B 备份源——192.168.112.191【客户端】
简介
- notify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件
- rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但是rsync不能实时的去监测、同步数据
原理
- Inotify只需要要按照部署在同步的客户端,当监控的文件有变化触动 rsync脚本来同步
A上操作
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.74.191
> list = false
> auth users = rsync_user
> secrets file = /etc/rsync.password
注意点:ip写的是B的ip【也就是客户端的ip】,
还有就是path的路径需要创建!!!
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 -nlpt|grep 873
B上操作
7、安装EPEL
yum -y install epel-release
8、安装inotify和rsync服务
yum -y install inotify-tools rsync
9、设置客户端密码文件,修改权限
echo “rsync_user_pwd” > /etc/rsync.password chmod -R 600
/etc/rsync.password
10、编写脚本
vim bf.sh
#!/bin/bash
ip=192.168.74.190
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的路径需要创建!!!
路径验证
11、创建目录
mkdir -p /data/mysqldata_src
12、执行脚本 (不要停)
sh bf.sh
13、进入相应的目录,创建文件
**
cd /data/mysqldata_src/
touch aa.txt
**
14、切回到A上查验
cd /data/mysqldata/
ls