Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955116
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2010-08-30 16:12:31

作者:pkfeiyang        博客主页:  pkfeiyang.cublog.cn

有时我们会用crontab 来自动话管理系统资源的动向,但是如果当一个目录下文件发生改变,那么远程和这台机器是为用户提供web服务时,决不允许发生内容不一致问题,所以我采用了rsync+inotify的功能来帮我实现这个目的,当我一台服务器上web内容出现改变时,远程服务器上的web也要同时改变。
   由于公司增加了一台web服务器,我采用前端nginx,后端apache的构架,当我用nginx去调去后端的是数据也时总有些内容不一致,我开始使用rewrite规则进行重定向,但是又增加了后端apache服务器的负担,因此我想能不能把后端服务器的内容同步到这太nginx的服务器上,减轻后端服务器的负载。

  闲话不说,开始干活
       服务端,192.168.10.2
       客户端。192.168.10.3
   环境:more /etc/redhat-release
        CentOS release 5.4 
        uname -a
        Linux kaixin 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
 一:安装rsync
   1.其实在你安装系统的时候,rsync已经安装上了
        但是还需要添加一个rsyncd.conf文件(内容见后面)
        下载包:
        
          解包安装
         ./configure --prefix=/usr/local/rsync
          make
          make install
   2.vi /etc/rsyncd.conf
          
      uid = root  #用户
      gid = root

      max connections = 200 #最大连接数
      timeout = 600   #多长时间连接
      use chroot = yes  #改变权限使用
      read only = yes #在传输过程中的属性
      pid file=/var/run/rsyncd.pid  #进程pid
      port = 873 #端口
      lock file = /var/lock/subsys/rsync.lock
      log file = /var/log/rsyncd.log  #日志

      #hosts allow=192.168.0.0/16 #允许使用rsync的主机
      syslog facility = local7 #系统使用的进程吧(不是很清楚了)

      [mnt_fdada]  ##定义模块,
      path = /mnt/  #路径,你服务器上的 ,也就是需要同步到这个目录
      comment = BACKUP CLIENT IS SOLARIS 8 E250
      ignore errors ###忽视传输过程中的错误
      read only = no #属性
      list = no #列表,很占资源的 我就把他禁掉了
      auth users = root #使用的用户
      secrets file=/etc/inburst.pas #认证文件
      [put_tmp_fdajk]
      path = /mnt/
      comment = UPDATE
      ignore errors
      read only = no
      list = no
      auth users = root
      #secrets file = /etc/inburst.pas
      创建验证文件
         vi /etc/inburst.pas
           root:123456
        修改成0600 的权限,否则你会验证不过去哦
      启动rsync
           /usr/local/rsync/bin/rsync --daemon
           如果修改rsycnd。conf 时需要执行下列命令使其生效
        killall -9 rsync
        ]# rm -rf /var/run/rsyncd.pid
        ]# /usr/local/rsync/bin/rsync --daemon
    3.测试
      到客户端192.168.10.3上执行
      rsync -avz --progress --delete  /opt/test/    root@192.168.10.2::mnt_fdada
      然后会提示输入密码正确就ok了最好客户端也创建一个同样的文件,保证验证时减少错误几率。
(要和服务器上的文件里的模块一致,否则报错。)
       下面这个是不用输入密码的脚本命令
        rsync -avz --progress --delete --password-file=/etc/rsync.pas /opt/test/    root@192.168.10.2::mnt_fdada
      一切ok进行下一步
二:客户端安装inotify
    下载地址
     
      tar -xzf inotify-tools-3.14.tar.gz
        cd  inotify-tools-3.14

         ./configure
         make
         make install
      编写测试脚本inotify。sh
      1 #!/bin/sh
      2 SRC=/opt/test
      3 #DST=/dir 远鲁?sync模驴茅碌?驴录
      4 INWT=/usr/local/bin/inotifywait
      5 RSYNC=/usr/bin/rsync
      6 $INWT -mrq -e create,move,delete,modify $SRC | while read D E F ; do
      7 $RSYNC  -avz --progress --delete --password-file=/etc/rsync.pas /opt/test/ root@192.168.10.2::mnt_fdada
      8 done
     
     修改权限,给可执行的哦
     然后让其后台执行
     就在你的/opt/test 下随便创建文件
     ./inotify.sh &  ####这个请注意,不要上来就直接后台运行,如果出错的话技术进程有点麻烦。
                         直接运行的话还可以curtl +c 下 直接停止 减少错误指令带来的损失
     building file list ...
     4 files to consider
     deleting aaaaa
    ./
     aaaa
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1/4)

   sent 133 bytes  received 44 bytes  354.00 bytes/sec
   total size is 0  speedup is 0.00
   building file list ...
  3 files to consider
  deleting aaa
  ./
   前提准备,关闭防火墙。要不你在防火墙将rsync的端口打开
   否者也会报错哦
   具体错误解析,请看我的工作错误记录哦。http://blog.chinaunix.net/u3/103362/showart_2314112.html

阅读(1483) | 评论(0) | 转发(0) |
0

上一篇:正则 查看系统

下一篇:rsync 错误集合

给主人留下些什么吧!~~