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
2.パスワード検証ファイル、rsyncdを作成します.passwd
3.パスワードファイル権限の変更
4.Rsyncの起動
Client:1、パスワード検証ファイルrsyncdを作成します.passwd、ここではパスワードを入力するだけでいいです.
2.インストールinotify
3.同期スクリプトの作成
4.スクリプト権限の変更と実行
5.スクリプトを起動項目に追加
echo "/usr/local/inotify/rsync.sh" >> /etc/rc.local
一)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