【コンパイルパッケージ】realsync-0.1-11.el6.src.rpm


inotifywait+rsyncリアルタイム同期のスキームを統合し、重複労働を減らし、初心者の構成の難易度を減らすために、標準的なrpmパッケージにパッケージ化しました.
名前realsyncは、まったくでたらめで、real-time rsyncを意味し、同じように、偶然の一致である.CentOS 6プラットフォームでテストを行い、正常に動作した.
単純な2行構成で、/etc/sysconfig/realsyncの構成ファイルである一方向リアルタイム同期を実現
######################################
# local directory to monitor.
# example: local_dir="/etc/"
local_dir=" "
# remote directory to sync,
# which should be a writable rsync server.
# example: remote_dir="192.168.1.2::data/"
remote_dir=" "
######################################

上記の2つの変数が構成されていない場合は、起動に失敗します.
インストールした後に、デフォルトは機械をスタートさせることに参加して、機械をスタートさせる方法を取り消します
chkconfig realsync off

Initスクリプトは4つのパラメータをサポートします.
service realsync start
service realsync stop
service realsync restart
service realsync status

ネット上の他のチュートリアルとの違い:
1、その他のチュートリアルは一般的にコマンドinotifywait+パイプ+whileサイクルです.
参照先:http://lxw66.blog.51cto.com/5547576/1331048
このように柔軟性に欠けており、サービスのようにいつでも停止したり起動したりすることはできず、醜い.
2、本文の方法
a.inotifywaitにバックグラウンドでモニタリング結果をファイルに書き込む
b、whileループでファイルが空かどうかを監視し、空でない場合はrsyncを実行する
c、ロックファイルが存在しない場合は、ループを停止します.
#!/usr/bin/env bash

set -e

. /etc/sysconfig/realsync

logsize=`/usr/bin/stat -c %s $logfile`

/usr/bin/inotifywait \
        -mrqsd \
        --timefmt '%d/%m/%y %H:%M' \
        --format '%T %w%f%e' \
        --event close_write,modify,create,attrib \
        --outfile $logfile $local_dir

while [ $logsize -gt "0" ];do
        [ -e $lockfile ] || break
        sleep 1
        /usr/bin/rsync -aqu $local_dir $remote_dir
        >$logfile
done&