rsync+inotify远程同步
一、相关概论
1.1 rsync
rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
1.2 inotify
- Linux内核的inotify机制,从版本2.6.13开始提供,可以监控文件系统的变动情况,并作出通知响应
- 所需软件:inotify-tools
二、定期同步的优点及不足
2.1 优点
- 一旦同步原出现变化,立即启动备份
- 只要同步原无变化,则不执行备份
2.2 不足
- 执行备份的时间固定,延迟明显、实时性差
- 当同步原长期不变化时,密集的定期任务是不必要的
三、rsync+inotify实时同步
3.1 调整inotify内核参数
/etc/sysctl.conf(内核参数配置文件)
max_queue_events:监控事件队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数
3.2 安装inotify-tools辅助工具
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果
3.3 通过inodifywait触发rsync同步操作
- 使用while、read持续获取监控结果
- 根据结果可以作进一步判断,决定执行何种操作
四、配置rsync下行同步
环境配置
主机 | 操作系统 | IP地址 | 软件包/工具 |
---|---|---|---|
源端 | CentOS7 | 192.168.153.10 | rsync |
发送端 | CentOS7 | 192.168.153.20 | rsync、inotify-tools-3.14.tar.gz |
4.1 配置rsync源服务器
关闭防火墙及安全机制
systemctl stop firewalld
setenforce 0
安装服务
yum install -y rsync
修改配置文件
vim /etc/rsyncd.conf #添加以下配置项
uid = nobody #root
gid = nobody #root
use chroot = yes #禁锢在源目录
address = 192.168.153.10 #监听地址
port 873 #监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #存放进程 ID 的文件位置
hosts allow = 192.168.153.0/24 #允许访问的客户机地址
[