1. 软件简介
rsync
rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程 数据同步备份的优秀工具。在同步备份数据时,默认情况下,Rsync 通过其 独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文 件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的 参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现 快速的同步备份数据
inotify-tools
Inotify 是一种强大的,细粒度的。异步的文件系统事件监控机制,linux 内核 从 2.6.13 起,加入了 Inotify 支持,通过 Inotify 可以监控文件系统中添加、 删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文 件系统下文件的各种变化情况,我们也是基于此功能信息实现了简单的信息 报文监控。
2. 功能介绍
本文实现文件自动同步的方法是基于两个软件 rsync 和 inotify-tools,要利用监 控服务(inotifywait 和 inotifywatch),监控同步数据服务器目录中信息的变化, 如发现目录中数据产生变化,就利用 rsync 服务推送到备份服务器上。 软件功能分工如下:
那么只是通过两个软件不同的功能是实现不了自动同步的,需要我们编写脚本来 进行功能结合。
3. 软件安装
由于这两种软件均比较常见,我司相关源中均有这两种软件,安装方式可以 通过 yum 安装或 apt 安装,或单独下载安装包安装即可,相关依赖较少,安 装是比较方便的,安装过程不再介绍。
4. 注意事项
inotify 软件需要 linux 内核 2.6.13 以后的内核版本才能支持。此程序是用 C 语言编写的,除了支持 inotify 的 Linux 内核之外没有其他依赖项。
利用 rsync 命令备份目录时,备份的目录后面有 / 和 没有 /,备份内容完 全不一样
二、软件部署
1. rsync 部署
传输方式
rsync 软件本身传输有多种传输方式,一般使用场景为增量备份使用,安 装软件后直接使用命令即可满足需求,远程传输命令类似于 scp。由于比较 简单,本文不做详细介绍,可通过互联网详细查询。
本次需要依赖的是其中的一种通过 socket(进程方式)传输文件和数据,也 就是通过创建守护进程,使用客户端和服务端的形式,不同于简单的类似 s cp 远程传输的推/拉方式传输。这就需要我们设立客户端和服务端,并配置 相关配置文件信息,才可以实现从客户端推送数据至服务端。
同步功能测试
主要是通过服务端开启守护进程,客户端 使用命令指定配置模块和安全文件来实现传输同步,这样既实现了免密的便捷 性,又保证了传输过程当中的安全性,我们看下相关传输过程以及原理如图:
监听方式
那么 inotify 本身有两大功能,一种是用来监控目录或文件动作,一种是用来统 计相关信息,那么实现实时同步功能采用的是这种监控动作的功能。两种功能对 比如下:
说明:在实时实时同步的时候,主要是利用 inotifywait 对目录进行监控
命令模板
由于 inotifywait 本身是命令行使用形式,所以我们主要来看一下 inotifywait 使用 的命令模板。
三、实现实时同步
条件验证
我们知道,两个软件各自不同的功能单独使用均不能实现实时同步的功能,需要 我们将两个软件使用脚本进行互相联系调用,达到实时同步的效果。
我们查看一下两个软件分别已验证可用的命令信息:
rsync 客户端服务命令确认可用,可实现增量同步功能
rsync -avz --delete /data/ rsync_backup@10.0.0.4::backup --password-file=/etc/rs
ync.password
rsync 服务端,确认服务已正常开启:
netstat -lntup |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:*