rsync+inotifyサーバ間ファイルのリアルタイム同期を実現


rsyncはトリガ式のファイル同期を実現することができるが、crontabデーモン方式によってトリガを行い、同期のデータと実際のデータに違いがあるが、inotifyはファイルシステムの様々な変化を監視することができ、ファイルに何らかの変動がある場合、rsyncをトリガし、このようにちょうど私の需要、同期データのリアルタイム性の問題を解決することができる.次は私が話しているのを見てみましょう.
一)lists
Ip
Status
Cp  PATH
App
192.168.1.1
Server
/data
Rsync-server
192.168.1.2
Client
/OM/logs/data
Rsync-client+inotify
二)需要
サーバ側サーバ(192.168.1.1)はclient側サーバ(192.168.1.2)のようにデータを同期し、inotifyに操作を傍受させる.
クライアント側の/OM/logs/dataの下に作成、削除などのファイル操作がある場合、server側もデータファイルをリアルタイムで同期します.
 

三)実戦
Server:1.rsyncプライマリプロファイルrsyncdを作成します.conf
 [email protected] :/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
[email protected]:/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
  • [[email protected] ]# cd /app
    [[email protected]  app]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  
    [[email protected]  app]# tar zxvf inotify-tools-3.14.tar.gz  
    [[email protected]  app]# cd inotify-tools-3.14  
    [[email protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify  
    [[email protected] inotify-tools-3.14]# make  
    [[email protected] 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