rsync+inotify-tools实现文件远程实时备份

rsync的优势与不足:
      与传统的cp、tar备份方式相比,rsync具备安全性高、备份迅速、支持增量备份等优势,经过rsync能够解决对实时性要求不高的数据备份需求,例如按期的备份文件服务器数据到远端服务器,对本地磁盘按期作数据镜像等。随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出更高的求,rsync在高端业务系统中也逐渐暴露出了不少不足,首先,rsync同步数据时,须要扫描全部文件后进行比对,进行差量传输。若是文件数量达到了百万甚至千万量级,扫描全部文件将是很是耗时的。并且正在发生变化的每每是其中不多的一部分,这是很是低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它能够经过linux守护进程的方式进行触发同步,可是两次触发动做必定会有时间差,这样就致使了服务端和客户端数据可能出现不一致,没法在应用故障时彻底的恢复数据。基于以上缘由,rsync+inotify组合出现了!html

       Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,经过Inotify能够监控文件系统中添加、删除,修改、移动、权限等各类细微事件,利用这个内核接口,第三方软件就能够监控文件系统下文件的各类变化状况,而inotify-tools就是这样的一个第三方软件。rsync能够实现触发式的文件同步,可是经过crontab守护进程方式进行触发,同步的数据和实际数据会有差别 ,而inotify能够监控文件系统的各类变化,当文件有任何变更时,就触发rsync同步,这样恰好解决了同步数据的实时性问题。linux


测试环境

    hostname       IP                       用途
    rac1               172.18.1.106        主服务器
    rac2               172.18.1.108        备份服务器,当主服务器有数据更新时实时同步到备份服务器

rac1主服务器操做以下:

step1:安装rsyncweb

yum -y install rsync
rpm -qa | grep rsyncvim


step2:安装inotify-tools安全

注意:在安装inotify-tools前请先确认你的linux内核是否支持inotify,而且在编译时开启了        CONFIG_INOTIFY选项,能够经过如下命令检测:
 ls /proc/sys/fs/inotify/
bash

#输出结果为max_queued_events max_user_instances max_user_watches这表示支持此功能
服务器

下载inotify-tools 软件包
 tar zxvf inotify-tools-3.14.tar.gz
 cd inodify-tools-3.14
 ./configure
 make && make install

 step3:建立密码认证文件
 vim /etc/rsyncd.passwd
 rootroot
 wq

 step4:修改权限为600,否者会报错
 chmod 600 /etc/rsyncd.passwd | ls -l /etc/rsyncd.passwd
 -rw-------. 1 root root 30 5月   9 12:07 /etc/rsyncd.passwd

 step5:建立同步目录用于测试,也能够直接使用网站目录/var/www/html/
 mkdir -p /data/www/

 step6:建立rsync.sh脚本,并给脚本执行权限
 vim /rsync.sh
 #!/bin/bash
 host=192.168.1.108
 src=/var/www/html/
 des=web
 user=root
 /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib ${src}  | while read  files
 do
 /usr/bin/rsync -vzrtopg --delete --progress ${src} ${usr}@${host}::${des} --password-file=/etc/rsyncd.passwd && echo "${files} was rsynced">>/tmp/rsync.log 2>&1
 echo "---------------------------------------------------"
done

chmod +x /rsync.sh | ls -l /rsync.sh

rac2备份服务器操做以下:

step1:安装rsync
yum install -y rsync

step2:建立并定义rsync配置文件
vim /etc/rsyncd.conf
uid=root
gid=root
use chroot=no
max connections=100
timeout=600
pid file=/var/run/rsyncd.pid
lock file=/var/log/rsyncd.lock
log file=/var/log/rsyncd.log
[web]
path=/var/www/html/
comment files=web files
ignore errors=yes
read only=no
list=no
hosts allow=192.168.1.0/16
hosts deny=*
auth users=root
secrets file=/etc/rsyncd.passwd
wq

step3:建立密码认证文件,路径及文件名与rsyncd.conf中一致,而且修改权限为600
vim /etc/rsyncd.passwd
root:rootroot
wq

chmod 600 /etc/rsyncd.passwd  | ls -l /etc/rsyncd.passwd

启动rsync,并设置开机自启动
rsync --daemon   若rsyncd.conf文件不在/etc/目录下则须要指明路径如rsync --daemon --config=/etc/rsync/rsycnd.conf
echo "/usr/bin/rsync --daemon">>/etc/rc.local

rac1操做:
在rac2上配置完后,需在rac1上执行rsync.sh脚本在后台运行,并添加到开机自启动中
[root@rac1 ~]# sh /rsync.sh
[root@rac1 /]# echo "/bin/sh /rsync.sh ">> /etc/rc.local异步

完成以上操做后,rac1上的/var/www/html/目录下的文件,并不会马上同步到rac2上,而须要在rac1上的/var/www/html/建立或修改文件,来触发实时同步任务
ide

相关文章
相关标签/搜索