rsync实时同步(搭配inotify-tools)

 
rsync可以实现文件的同步功能,但是如何实现两台服务器的文件实时同步呢?本文介绍使用rsync+inotify实现文件实时同步。

Inotify 是文件系统事件监控机制,只要是内核版本在2.6.13以上的linux系统都可以用。
inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
rsync下载地址:http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz

一、需求分析

服务器A的数据目录内容变化后,改变要实时更新到服务器B的相关目录。

二、解决方案

1、多台服务器做为rsync服务器端,服务器A做为rsync客户端,使用rsync命令同步数据内容。
2、inotify做为触发器,当服务器A数据目录内容变化时,执行rsync命令同步数据。

A  192.168.13.151
B  192.168.13.252

三、安装配置

1)、服务器端B安装配置rsync

如果是centos系统可以使用以下命令查看是否安装了rsync

# rpm -qa | grep rsync

如果有安装则可跳过以下源码安装
rsync源码安装

# wget http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
# tar zxvf rsync-3.0.7.tar.gz
# cd  rsync-3.0.7
# ./configure –prefix=/usr
# make
# maek install

rsync配置

# vim /etc/rsyncd.conf
输入以下内容
uid = root
gid = root
use chroot = no
max connections = 10
pid file =  /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file =  /var/log/rsync.log
[images]
path = /opt/images
read only = no
auth users = root
secrets file = /etc/rsyncd.secrets

建立用户认证文件

# echo -ne “root:rootpassword” >   /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets

开机自动执行

# echo -ne “rsync –daemon -–config=/etc/rsyncd.conf”   >> /etc/rc.local

启动服务

# rsync –daemon -–config=/etc/rsyncd.conf

2)客户端A安装rsync+inotify-tools

rsync安装可参照服务端B的安装方法,无需进行配置。

# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar zxvf inotify-tools-3.13.tar.gz
# cd inotify-tools-3.13
# ./configure –prefix=/usr/local/inotify
# make
# make install

建立用户密码文件

# echo -ne “B服务端root密码”  > /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets

建立同步脚本
# vim /root/InotifyRsync.sh

#!/bin/bash
host_1=192.168.13.252

 
src=/opt/image/
dst=images
user=root
 
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read file
        do
                rsync -avzP --delete  --password-file=/etc/rsyncd.secrets $src $user@$host_1::$dst  > /dev/null
                echo "${file} was rsynced"
         done
exit 0

开机自动执行

# echo -ne ‘/root/InotifyRsync.sh &’ >> /etc/rc.local

四、测试是否配置成功

在客服端A上执行脚本

# sh /root/InotifyRsync.sh

切换A服务器终端执行以下命令

# touch /opt/image/1.txt

查看B服务器的/opt/image/1.txt文件是否存在

inotify支持的触发事件

  • IN_ACCESS,即文件被访问
  • IN_MODIFY,文件被 write
  • IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
  • IN_CLOSE_WRITE,可写文件被 close
  • IN_CLOSE_NOWRITE,不可写文件被 close
  • IN_OPEN,文件被 open
  • IN_MOVED_FROM,文件被移走,如 mv
  • IN_MOVED_TO,文件被移来,如 mv、cp
  • IN_CREATE,创建新文件
  • IN_DELETE,文件被删除,如 rm
  • IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
  • IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
  • IN_UNMOUNT,宿主文件系统被 umount
  • IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
  • IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)

转载:FKBlog » rsync实时同步(搭配inotify-tools)(http://www.fkblog.org/blog795)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值