【编译打包】realsync-0.1-11.el6.src.rpm

将inotifywait + rsync 实时同步的方案做了一个集成,为了减少重复劳动,减少新手配置难度,所以打包成一个标准的rpm包。


取名realsync,纯属瞎编,意为real-time rsync,如有雷同,实属巧合。在CentOS 6 平台上经过测试,运行良好。


通过简单的两行配置即可实现单向实时同步,具体配置文件是/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=" "
######################################

如果没有配置上面两个变量,启动会失败。


安装好后,默认加入开机启动,取消开机启动办法

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&


你可能感兴趣的:(rpm,src.rpm,RealSync)