centos6.4 inotify+rsync实现文件同步设置

来源:互联网 发布:js select 设置选中项 编辑:程序博客网 时间:2024/06/05 11:03

1.1    简介

1.1.1  rsync

rsync,全称(Remote Rynchronization),是一款开源、快速、多功能的、可实现全量及增量的本地或远程数据镜像同步备份的工具。可实现本地和远程两台主机之间的数据快速复制同步镜像、远程备份等功能。

相关特性:

1、  可排除指定目录或文件同步

2、  可以保持原文件或目录的权限、时间、软硬链接等所有属性不变

3、  可实现增量同步,即只同步发生变化的数据,因此数据传输速率较高

4、  可使用rcp、rsh、ssh等方式配合传输文件

5、  支持匿名或认证的进程模式传输,实现方便安全的数据备份及镜像。

rsync的不足:

首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

1.1.2  inotify

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

1.2    rsync+inotify的使用

1.2.1  Server端

1、  安装rsync

通过xinetd管理rsync

yum install rsync xinetd -y

修改/etc/xinetd.d/rsync文件,使其随xinetd启动而启动

vim /etc/xinetd.d/rsync

......将disable = yes 修改为 disable =no

disable = no

2、 建立rsync的配置文件

/etc/rsync.conf

uid=root

gid=root

use chroot=no

max connections=10

timeout = 600

port = 873

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

secrets file=/etc/rsyncd.password

 

[backup]

path = /home/jyli/test1

ignore errors

read only = no

list = no

hosts allow=*

auth users=jyli

 

3、建立/etc/ rsyncd.password文件

jyli:iflytek

格式  用户名:密码 

# chmod 600 /etc/rsyncd.password

该文件必须有600权限

4、rsync启动

/etc/init.d/xinetdrestart

#chkconfig xinetd on
#chkconfig rsync on

1.2.2  client端

1、  安装rsync,同server端

2、  安装inotifytools工具包

# tar zxf inotify-tools-3.14.tar.gz

# cd inotify-tools-3.14

# ./configure && make && make install

 

3、  建立/etc/rsyncd.password文件

iflytek

这里只填写密码即可,需注意的是,必须是server端对应要同步模块的用户名密码

同样必须是600权限

4、  编写inotify.sh监控脚本

 

src=/home/spwang/logs/

des=backup

user=jyli

ip=192.168.72.59

 

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T%w%f' -e modify,delete,create,attrib $src | while read file

do

rsync -vzrtopg --partial --progress $src $user@$ip::$des --password-file=/etc/rsyscd.password

done

 

启动

# chmod +x /root/inotify.sh

# /root/inotify.sh &        #在后台执行

6、相关问题

(1)、  同步时删除源机器中的文件及目录时,要求不删除备份服务器的文件。

可以实现,通过rsync的配置,在inotify.sh监控脚本配置中,去除—delete参数即可。

--delete参数含义:删除那些DSTSRC没有的文件

(2)、  在同步时网络断开,网络恢复时,能否继续同步?

添加—partial参数,--timeout=15

       --partial:断点续传

       --timeout:超时


0 0