码迷,mamicode.com
首页 > 其他好文 > 详细

Inotify+rsync同步两主机之间数据

时间:2015-05-03 19:12:34      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:rsync inotify 同步

本文介绍rysnc与inotify同步两个主机的目录,使用RHEL6.6版本。


rsync既remote sync,是UNIX类系统文件同步和数据传输工具,能实现客户端和远程服务器端的文件同步,它采用的是rsync算法,它比较传输源文件和目标文件有变更的部分进行传送。

rsync的一些特性

    1>增量数据同步,传输效率搞

    2>镜像保存整个目录树和文件系统

    3>保留文件属性,时间戳等。

    4>支持加密传输


inotify是一种高效率、细粒度、异步的文件系统监控机制。它监控文件系统,并且及时向第三方软件(如rsync)发出相关的删、读、写操作等。linux内核2.6.13版本开始支持inotify。利用这个内核接口,第三方软件如inotify-tools可以监控文件系统下文件的变化情况。


案例演示:

监控192.168.1.7的/var/www/html目录,当目录内容有变化,立即将其内容同步到192.168.1.8的/var/www/html目录。


主机:192.168.1.8

系统默认已安装rsync,不需手动安装。但没有提供配置文件,需手动建立。

编辑/etc/rsyncd.conf

uid=nobody
gid=nobody
use chroot = no
max connections =10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
 
[xiaoming]
path = /var/www/html/
comment = xiaoming file
ignore errors
read only = no
write only = no
host allow = 192.168.1.7
host deny = *
list = false
uid = root
gid = root
auth user = xiaobai
secrets file = /etc/server.pass
# useradd xiaobai
# echo 123456 | passwd xiaobai --stdin


启动rsync守护进程

# rysnc --daemon



主机:192.168.1.7

安装inotify-tools

# yum install inotify-tools

查看生成了那些文件

# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
/usr/share/doc/inotify-tools-3.14
......

inotifywait使用内核inotify接口等待文件的变化,时候使用shell脚本来实现。

    -m,--monitor 始终保持事件的坚听,默认是在一个事件发生后退出。

    -r ,--recursive 递归监控目录

    -q,--quiet 在屏幕显示监控事件

    -e,--event 制定要监控的事件,如modify、delete、create、access、attrib等

 inotifywatch收集被监控的文件系统统计数据。


编辑脚本/root/rsync.sh

#!/bin/bash
host=192.168.1.8
src=/var/www/html
user=xiaobai
dst=xiaoming
/usr/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--password-file=/etc/server.pass $src $user@$host::$dst
       echo "${files} was rsynced" >> /tmp/rsync.log2>&1
       done
编辑/etc/server.pass
123456
# chmod 600 /etc/server.pass


放入后台执行

# bash rsync.sh &

此时,在192.168.1.7主机/var/www/html目录变更文件,192.168.1.8会立即同步。

本文出自 “在路上” 博客,请务必保留此出处http://mingxiao.blog.51cto.com/8124243/1641385

Inotify+rsync同步两主机之间数据

标签:rsync inotify 同步

原文地址:http://mingxiao.blog.51cto.com/8124243/1641385

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!