1、相关组件简介linux
一、rsync安全
与传统的cp、tar备份方式相比,rsync具备安全性高、备份迅速、支持增量备份等优势,经过rsync能够解决对实时性要求不高的数据备份需求,例如按期的备份文件服务器数据到远端服务器,对本地磁盘按期作数据镜像等。
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了不少不足,首先,rsync同步数据 时,须要扫描全部文件后进行比对,进行差量传输。若是文件数量达到了百万甚至千万量级,扫描全部文件将是很是耗时的。并且正在发生变化的每每是其中不多的 一部分,这是很是低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它能够经过linux守护进程的方式进行触发同步,可是两次触发动做必定 会有时间差,这样就致使了服务端和客户端数据可能出现不一致,没法在应用故障时彻底的恢复数据。基于以上缘由,rsync+inotify组合出现了!bash
二、inotify服务器
Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,经过Inotify能够监控文件系统 中添加、删除,修改、移动等各类细微事件,利用这个内核接口,第三方软件就能够监控文件系统下文件的各类变化状况,而inotify-tools就是这样 的一个第三方软件。
在上面章节中,咱们讲到,rsync能够实现触发式的文件同步,可是经过crontab守护进程方式进行触发,同步的数据和实际数据会有差别,而inotify能够监控文件系统的各类变化,当文件有任何变更时,就触发rsync同步,这样恰好解决了同步数据的实时性问题。ssh
查看内核是否支持inotify API,若是有如下三项,表示系统已经默认支持inotify:异步
ll /proc/sys/fs/inotify
2、软件安装和配置3d
安装Rsyncorm
分别在服务器A和服务器B的terminal执行:blog
sudo yum install rsync
安装完毕后,会发现rsync的配置文件位于 etc/rsyncd.conf 。该文件使用daemon方式同步时须要使用,此处暂不介绍。递归
配置服务器A和B之间的免密登陆
服务器A执行:
ssh-keygen ssh-copy-id 服务器B的IP地址
inotify-tools的安装
yum install -y epel-release yum --enablerepo=epel install inotify-tools
使用inotifywait命令进行事件监听
监听脚本以下(inotifywait-rsync.sh):
host=192.168.171.129 src1=/home/esoon/rsync/ src2=/home/esoon/test/ /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src1 $src2 | while read file do rsync -avPz --delete --progress $src1 $host:$src1 rsync -avPz --delete --progress $src2 $host:$src2 echo "${file} was rsynced" >>rsync.log 2>&1 done
参数解析
对于每次触发的监听时间,inotifywait会执行do和done之间的代码。在这里,咱们调用以前所说的rsync命令进行文件同步。
直接执行下面命令开始监听:
nohup sh inotifywait-rsync.sh >/dev/null &