目录
一、inotify
二、rsync+inotify实时同步搭建
1. 实验环境配置
2. 配置 服务端192.168.91.103
1. 修改rsync源服务器配置文件
3. 配置 客户端192.168.91.102
1. 创建文件夹
编辑
2. 调整 inotify 内核参数
3. 安装inotify-tools
4. inotify对文件进行监控
5. 测试inotify效果
6. 创建脚本触发rsync
4. 测试脚本运行
1. 创建文件夹测试
2. 文件中导入内容测试
3. 追加文件测试
一、inotify
使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。
可以监控文件系统的变动情况,并做出通知响应
-
调整inotify内核参数(优化)
-
/etc/sysctl.conf(内核参数配置文件)
notifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再输出结果
-
notifywait:用于持续监控,实时输出结果
-
inotifywatch:用于短期监控,任务完成后再输出结果
二、rsync+inotify实时同步搭建
1. 实验环境配置
应用服务器/客户端:192.168.91.102
inotify实时监控
/var/www/html/cc
rsyncd服务端接收:192.168.91.103
/data/ 备份目录
2. 配置 服务端192.168.91.103
1. 修改rsync源服务器配置文件
vim /etc/rsyncd.conf
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
rsync --daemon
netstat -anpt | grep rsyncchmod 777 /var/www/html/cc
3. 配置 客户端192.168.91.102
1. 创建文件夹
2. 调整 inotify 内核参数
cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances
cat /proc/sys/fs/inotify/max_user_watches
vim /etc/sysctl.conf fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576sysctl -p
3. 安装inotify-tools
yum -y install gcc gcc-c++ #放入安装包
tar zxvf inotify-tools-3.14.tar.gz -C /optcd /opt/inotify-tools-3.14/./configure
make && make install
4. inotify对文件进行监控
inotifywait -mrq -e modify,create,move,delete /var/www/html/cc/
5. 测试inotify效果
6. 创建脚本触发rsync
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /var/www/html/cc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/cc/ xzq@192.168.91.103::kkk"$INOTIFY_CMD | while read directory event file
doif [ $(pgrep rsync | wc -l) -le 0 ];then$RSYNC_CMDfi
done
chmod +x inotify.sh
chmod 777 /var/www/html/cc/
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local
./inotify.sh