天天看点

15Linux网络服务之配置rsync+inotify实时同步

作者:IT医生

配置rsync+inotify实时同步

一 关于inotify

·inotify的介绍

Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应

辅助软件:inotify-tools

官方网站:http://inotify-tools.sourceforge.net

·rsync实时同步

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题

二 rsync+inotify实时同步

正因为inotify通知机制由linux内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步

例如如发起端是web服务器,现在web服务器要将网站根目录/var/www/html目录实时同步到备份源的/wwwroot目录中,备份源可以使用密钥验证的SSH备份源,然后使用上行同步SSH备份源的方式进行实时同步

·配置inotify

发起端

1查看内核支持情况(可略)

查看是否支持inotify,从kernel 2.6.13开始正式并入内核。

看看是否有 /proc/sys/fs/inotify/目录,以确定内核是否支持inotify

15Linux网络服务之配置rsync+inotify实时同步

在linux内核中,默认的inotify机制提供了三个调控参数:max_queued_events、max_user_instances、max_user_watches。分别表示监控事件队列、最多监控实例数、每个实例最多监控文件数

15Linux网络服务之配置rsync+inotify实时同步

2调整内核参数(可略)

使用默认即可;当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。例如可直接修改/etc/sysctl.conf配置文件,将管理队列设为32768,实例数设为1024,监控数设为1048576(建议大于监控目标的总文件数)。

在/etc/sysctl.conf文件中添加如下内容:

15Linux网络服务之配置rsync+inotify实时同步

执行sysctl -p使修改后的sysctl.conf文件生效。

3安装inotify-tools工具

使用inotify机制还需要安装inotify-tools,以便提供inotifywait(用于持续监控,实时输出结果)、inotifywatch(用于短期监控,任务完成后再出结果)辅助工具程序

15Linux网络服务之配置rsync+inotify实时同步
15Linux网络服务之配置rsync+inotify实时同步
15Linux网络服务之配置rsync+inotify实时同步

4手动测试持续监测

15Linux网络服务之配置rsync+inotify实时同步

其中选项

-e用来指定要监控哪些事件

create,move,delete,modify,attrib 是指监听创建、移动、删除、写入、属性更改等事件

-m表示持续监控、-r表示递归整个目录、-q表示简化输出信息

其他选项的含义:

-a 存档模式

-h 保存硬连接

-z 压缩文件数据在传输

-t 维护修改时间

--delete 删除于多余文件

运行此条命令后即可开始监控网站目录/var/www/html,然后在另一个终端向/var/www/html目录下添加文件、移动文件,跟踪屏幕输出结果

15Linux网络服务之配置rsync+inotify实时同步

监控结果中,每行记录中依次包括目录、事件、文件

常见事件

15Linux网络服务之配置rsync+inotify实时同步

·配置SSH备份源的无交互式验证

备份源

1创建上传用户rput

15Linux网络服务之配置rsync+inotify实时同步

2创建实时同步目录(上传目录)并调整权限

15Linux网络服务之配置rsync+inotify实时同步

发起端

3创建密钥对,并将公钥文件上传至备份源

15Linux网络服务之配置rsync+inotify实时同步
15Linux网络服务之配置rsync+inotify实时同步

验证一下连接

15Linux网络服务之配置rsync+inotify实时同步

4测试一下上行同步

15Linux网络服务之配置rsync+inotify实时同步

·通过inotifywait触发rsync同步操作

发起端

1编写触发式同步脚本

15Linux网络服务之配置rsync+inotify实时同步

2执行脚本进行测试;在/var/www/html目录,执行增加、删除、修改文件等操作

15Linux网络服务之配置rsync+inotify实时同步

备份源

查看备份源的/wwwroot目录下的变化情况

15Linux网络服务之配置rsync+inotify实时同步

最后在到发起端将此脚本添加到开机启即可配置完成

15Linux网络服务之配置rsync+inotify实时同步

继续阅读