Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1422368
  • 博文数量: 122
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2967
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

说点什么呢

文章分类

全部博文(122)

文章存档

2018年(2)

2017年(1)

2015年(2)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: LINUX

2013-12-18 11:26:14

rsync+inotify实时同步配置

(整理时间:2011-8-2)

(环境:redhat as 5.5)

一、 安装配置rsync服务器
1、安装rsync软件
   rpm -ihv /home/wayne/rsync-2.6.3-1.i386.rpm

2、配置rsync服务端

a. 创建/etc/rsyncd.conf配置文件,内容如下

    uid = www        //指定文件传输过程中的用户身份

gid = www        //指定文件传输过程中的组身份
use chroot = no        //是否启动目录chroot限制
max connections = 5        //指定允许的最大并发客户端连接数
port = 873        //指定服务监听的端口,若使用默认的873端口,此行可省略
address = 192.168.2.7        //指定服务监听的ip地址,默认为0.0.0.0。使用xinetd方式启动服务时此行被忽略
log file = /jongo/logs/rsyncd.log     //指定使用独立的日志文件的位置
pid file = /jongo/logs/syncd.pid      //保存pid到指定文件,以便于使用脚本终止进程
hosts allow = 192.168.2.0/24       //此行可用于设置允许的客户端范围
[17buy_application]        //设置一个名为17buy_applicatio的备份目录区段(模块),名称可自定义
  path = /jongo/17buy        //指定需要被用于远程备份的目录
  comment = Whole 17buy application        //注释信息
  read only = yes        //该目录设置为只读,即至允许客户端下行同步,不允许上传。若需要进行上行还原数据,可以改为no
  dont compress = *.gz *.tgz *.zip *.z *.bz2 *.tbz        //对指定格式的文件不再进行压缩
  auth users = 17buybackup       //指定允许远程同步此目录的用户名。若使用匿名方式,此行和下行可以去掉
  secrets file = /etc/rsyncd.users        //指定用户名:密码数据库文件位置

        b.创建/etc/rsyncd.users 文件

echo '17buybackup:17buy$%^' >>/etc/rsyncd.users

chmod 600 /etc/rsyncd.users

  注意:

这个文件的权限需要600的,否则同步的时候会报错。

c. 创建或编辑/etc/xinetd.d/rsync文件

创建或编辑/etc/xinetd.d/rsync文件,确认为如下内容:

service rsync

{

         disable = no

         socket_type     = stream

         wait            = no

         user            = root

          server          = /usr/bin/rsync

          server_args     = --daemon

         log_on_failure  += USERID

}

        d. 重启xinetd服务

service xinetd restart

e. 防火墙设置

如果服务器启动了防火墙,则需要将对应的873端口的tcp协议和udp协议打

二、 安装inotify

wget 

tar -zxvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

# ./configure

# make 

# make install 

如果上述操作没有发生错误,则inotify已经安装好了

三、 设置ssh无密码登陆

在源机器上按如下操作:
# ssh-keygen -b 1024 -t rsa 一路回车上去,否则生成的KEY还是要密码的

# scp  /root/.ssh/id_rsa.pub root@destip:/root/.ssh/ authorized_keys  将生成的公钥拷贝到目标机器的/root/.ssh/下,并重命名为 authorized_key文件

  在目标机器上 chmod 600 /root/.ssh/ authorized_keys 设置权限。权限设置好了以后,就可以从源机器上用ssh上登陆目标机器,以验证是否还需要登陆密码。

四、同步脚步本

在源机器上编写如下脚本:
vi inotify.sh

#!/bin/sh

src=/jongo/17buy

des=/jongo/test

ip=122.224.72.126

/usr/local/bin/inotifywait -mrq  --timefmt '%Y%m%d-%H:%M:%S' --format '%T %w %f %e' -e modify,delete,create,attrib ${src} --fromfile

=/root/shell/excludefile.lst | while read time filepath file eventname

   do

     for i in $ip

      do

        if [ "${eventname}" == "DELETE" ]

          then

                echo  "`date +%Y%m%d-%T`:${eventname} has occured and sysn the ${filepath} directory  -> $ip" >>/var/log/rsync.log

                /usr/bin/rsync -aPHz  --delete  ${filepath} root@$ip:${filepath}  >>/var/log/rsync.log

          else

                 echo  "`date +%Y%m%d-%T`:${eventname} has occured and sysn the ${filepath}${file} file  -> $ip" >>/var/log/rsync.lo

g

                /usr/bin/rsync -aPHz  --delete  ${filepath}${file} root@$ip:${filepath}${file}  >>/var/log/rsync.log

         fi

     done

done

其中:

src是源路径 des是目标路径 ip是目标机器的IP地址  --fromfile指定一个文件,这文件里是包括不需要同步和检测的目录,每行一个文件或目录,以@打头表示不需要同步的目录我文件如这里的:

# vi /root/shell/excludefile.lst

@/jongo/17buy/UPLOAD_HOME/

表示源机器上的/jongo/17buy/UPLOAD_HOME目录不需要同步。

五、 执行同步脚本

/root/shell/ inotify.sh &将这个脚本放到后台,让其一直运行。然后就可以实时同步文件了。

阅读(1178) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~