rsync+inotify实现服务器间文件的实时同步

    rsync虽然能够实现触发式的文件同步,可是经过crontab守护进程方式进行触发,同步的数据和实际数据会有差别,而inotify能够监控文件系统的各类变化,当文件有任何变更时,就触发rsync同步,这样恰好解决了个人需求,同步数据实时性的问题,下面便看我娓娓道来。git

一) listsgithub

Ipc#

Statusbash

Cp  PATH服务器

Appapp

192.168.1.1ide

Serverui

/dataspa

Rsync-serverorm

192.168.1.2

Client

/OM/logs/data

Rsync-client+inotify

二)需求

    server端服务器(192.168.1.1)像client端服务器(192.168.1.2)同步数据,并让inotify监听操做。

    若是client端的/OM/logs/data下面有建立、删除等文件操做,server端也会相应的实时同步数据文件。

 

三)实战

Server:1.建立rsync主配置文件rsyncd.conf

 root@192.168.1.1 :/etc# vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
max connections = 100
use chroot = no
uid = root
gid = root
ignore errors
list = no
[example]
path = /OM/logs/data
read only = no                    #no客户端可上传文件,yes只读
write only = no                    #no客户端可下载文件,yes不能下载
auth users = aaron              # 认证的用户名,若是没有这行,则代表是匿名
secrets file = /etc/rsyncd.passwd        # 指定认证口令文件位置
hosts allow = 192.168.1.2
hosts deny = *

          2.建立密码验证文件,rsyncd.passwd

root@192.168.1.1:/etc# vi rsyncd.passwd   
aaron:bu/I*)NEj

          3.修改密码文件权限 

chmod 600 rsync.passwd

          4.启动Rsync

 /usr/bin/rsync --daemon

Client:1,建立密码验证文件rsyncd.passwd,这里只须要输入密码就能够了。

# vi rsyncd.passwd   
bu/I*)NEj

         2.安装inotify

  1. [root@192.168.1.2 ]# cd /app
    [root@192.168.1.2  app]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  
    [root@192.168.1.2  app]# tar zxvf inotify-tools-3.14.tar.gz  
    [root@192.168.1.2  app]# cd inotify-tools-3.14  
    [root@192.168.1.2 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify  
    [root@192.168.1.2 inotify-tools-3.14]# make  
    [root@192.168.1.2 inotify-tools-3.14]# make install

        3.建立同步脚本

#!/bin/bash
host=192.168.1.1
src=/data
des=example
user=aaron
/usr/local/inotify/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/rsyncd.passwd $src $user@$host::$des
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
done

        4.修改脚本权限并运行

chmod 764 rsync.sh
nohup rsync.sh &

        5.讲脚本加入开机启动项

echo "/usr/local/inotify/rsync.sh" >> /etc/rc.local 

相关文章
相关标签/搜索