centos7 inotify与rsync实现实时同步服务搭建


**需要准备两台虚拟机
一台rsync的客户端 192.168.1.14
一台rsync的服务器 192.168.1.12

inotify的服务器配置

yum install inotify-tools
192.168.1.14由于inotify是内核级别的应用,我们不能直接操作内核 需要借用一些关于inotify的相关工具

inotifywa /data/
监控此目录 一次性操作,复制ssh渠道 在复制渠道/data目录下进行增删改查的操作 观察监控窗口的变化

inotifywait -mrq /data/
持续递归监控此目录,-m持续  -q输出主要信息  -r 递归;复制ssh渠道 在复制渠道/data目录下进行增删改查的操作 观察监控窗口的变化

inotifywait -o /root/intify.log -drq /data/
以进程方式递归监控/data目录,输出的主要信息到/root下的intify.log日志里面 ,-d以进程方式执行 
-o+文件路径 ;指定输出的信息到指定文件下,复制ssh渠道 在监控窗口下进行增删改查的操作 在复制渠道的 /root/intify.log这个日志中观察变化

 inotifywait -mrq --timefmt "%Y-%m-%d %H:%M" --format "%T %w%f event: %;e" /data/ -e CREATE,MOVED_TO,DELETE,ATTRIB
只监控指定操作的类型时间  -e+事件的类型;监控事件类型的内容复制ssh渠道 在复制渠道/data目录下进行增删改查的操作 观察监控窗口的变化,

rsync服务器的搭建,独立端口为873

mkdir /backup
在192.168.1.12建一个目录,测试与对端主机的目录事件同步

vim /etc/rsyncd.conf
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
hosrs allow = 192.168.1.0/24
[backup]
path = /backup/
comment = backup
read only = no
auth users =rsyncuser
secrets file = /etc/rsync.pass
在192.168.1.12rsync服务器端写入配置
此配置注释
1,2 行为指定以谁的身份运行
3 行为,是否支持 切根
4 行为,是否限制他的并发连接数 0为 不限制
5 行为 如果错误,做忽略错误执行
6 行为指定的类型文件夹直接过滤 不做备份
7,8,9 行为  日志 id 锁文件的备份路径
10 行为涉及到 ip 地址是否反向解析 为提高效率 设定no为不解析
11 行为控制访问用户的范围
12 行为rsync要把同步过来的数据存放的目录名字
13 行为指定同步过来的数据存放的path路径
14 行为存放同步文件夹的说明
15 行为存放同步文件夹的权限
16 行为对方连接rsync的用户名 
17 行为对方连接rsync的口令存放的路径
注意;账号密码需要事先写好,同步过来的数据存放的文件夹也需要事先准备好

echo "rsyncuser:magedu" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
在192.168.1.12编写其他用户连接rsync服务器的账号与密码 并且把它放到一个指定文件里 注意设置600权限避免被其他人看到

systemctl start rsyncd
启动服务

echo "magedu" > /etc/rsync.pass
chmod 600 /etc/rsync.pass 
rsync -avz --password-file=/etc/rsync.pass /data/  [email protected]::backup
在192.168.1.14 inotify客户端的的操作;配置客户端的密码文件,  并且测试是否同步成功

vim inotify_rsync.sh
#!/bin/bash
SRC='/data/'
DEST='[email protected]::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |
while read DATE TIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
        rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done
这是一个关于数据同步的无限死循环的脚本,需要在192.168.1.14 inotify一端编写执行

rm -rf  /data/*
touch /data/f{1..6}
在192.168.1.14最后测试数据是否可以同步
**```

猜你喜欢

转载自blog.51cto.com/14234525/2396910