服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 4958|回复: 0

linux inotify+rsync+ssh数据时时同步

[复制链接]
dirtysea 发表于 2010-4-22 14:10:51 | 显示全部楼层 |阅读模式

一、介绍:

 inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知。从而达到文件实时同步的目的。

二、环境需求:

 软件:inotify-tools-3.13.tar.gz
 Os: centos5.3
 Server1:192.168.2.87
 Server2:192.168.2.88
 需求 server1 目录 /opt/sites/mxfarm.rekoo.com 时时同步 server2 /tmp/test

三、环境搭建:
  
1、首先**内核支持inotify,如果不支持对内核打补丁,一般情况内核在 2.6.3以上的都支持的。
      ludy@server1:~$ls -l /proc/sys/fs/inotify/
      总用量 0
      -rw-r--r-- 1 ludy ludy 0 2008-12-16 14:40 max_queued_events
      -rw-r--r-- 1 ludy ludy 0 2008-12-16 14:40 max_user_instances
      -rw-r--r-- 1 root root 0 2008-12-16 09:07 max_user_watches
       如果没有的话,呵呵安装inotify
2、软件安装:
      wget http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download
      tar zxvf inotify-tools-3.13.tar.gz
      cd inotify-tools-3.13
      ./configure
       make && make install
       ldconfig

3、生成SSH KEY 让 server1 ssh访问 server2不需要密码
      ssh-keygen
      然后把你用户目录下的 .ssh/id_rsa.pub 拷贝到 server2 的root下
      scp id_rsa.pub root@192.168.2.88:~/.ssh
      mv id_rsa.pub authorized_keys
      chown root:root authorized_keys
      chmod 600  authorized_keys
4、编辑配置文件inosync.sh
      #!/bin/sh
      SRC=/opt/sites/mxfarm.rekoo.com/
      DST=root@192.168.2.88:/tmp/test
      INWT=/usr/local/bin/inotifywait
      RSYNC=/usr/bin/rsync

      $INWT -mrq -e create,move,delete,modify $SRC | while read D E F;do
            rsync -aHqzt --delete $SRC $DST
      done

      主要参数介绍:
      $INWT -mrq -e create,move,delete,modify $SRC | while read D E F;do
            rsync -aHqzt --delete $SRC $DST
    -m 是保持一直监听
    -r 是递归查看目录
    -q 是打印出事件~
    -e create,move,delete,modify
    监听 创建 移动 删除 写入 事件 
    rsync -aHqzt $SRC $DST 
    -a 存档模式
    -H 保存硬连接
    -q 制止非错误信息
    -z 压缩文件数据在传输
    -t 维护修改时间
    -delete 删除于多余文件

四、运行并测试:  
  在server1上运行./inosync.sh &
 
  cd /opt/sites/mxfarm.rekoo.com
  touch hello

  在server2上/tmp/test 下看看:
  ls /tmp/test
  hello

五、监控多目录,多文件,同步到多台服务器
  
脚本分析:
#!/bin/sh
#set -x
#var 
src="/opt/sites/mxfarm.rekoo.com /opt/work"  #将两个目录
des_ip="192.168.2.9 192.168.2.88"   #同步到两台服务器

#function
inotify_fun ()
{
/usr/local/bin/inotifywait -mrq -e modify,delete,create,move $1 | while read time file
do
for ip in $des_ip
do

#echo "`date +%Y%m%d-%T`: rsync -avzq --delete --progress $1 $ip:`dirname $1`"
echo "`date +%Y%m%d-%T`: rsync -avzq --delete --progress $1 $ip:/tmp/"

#rsync -avzq --delete --progress $1 $ip:`dirname $1`
rsync -avzq --delete --progress $1 $ip:/tmp/ 将mxfarm.rekoo.com和work目录同步到/tmp/目录下

echo
done
done
}

#main
for a in $src
do
inotify_fun $a & 
done

  
六、可以对不同的ip 不同的目录创建多个脚本进行监控

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-4-25 19:56 , Processed in 0.142751 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表