Centos 的inotify和rsync文件实时同步

今天要做两台服务器,作为cdn的源头,两台服务器内容文件要同步.

一台主Master:192.168.1.230

一台备份slave:192.168.1.236

操作系统为centos 5.6 x86_64 .默认安装了rsync

1. 我们只需要在Master上安inotify-tools这个工具

下载地址.

解压,按照INSTALL说明安装好.

2. 在Master上生成key免密码 ssh-keygen -t rsa  生成一对密钥~/.ssh/

3. 把Master主机~/.ssh/id_rsa.pub 拷贝为slave主机的~/.ssh/authorized_keys

4. 特别注意在master和slave上都要把.ssh的目录权限改为700 ,里面的文件改为600.不然还是会失败的.其实把sshd_conf中的StrictModes yes 改为no这个这样就不用改权限也能成功(不建议).

5. ssh 192.168.1.236 无需密码测试成功后.在master上

 

  
  
  
  
  1. #/bin/bash
  2. srcdir=/home/web/ #需要被同步的目录
  3. ip="192.168.1.236" # 目标主机,多个ip可以空格分开                                                                                                                                                          
  4. dstdir="/home/web/" #文件被同步到的目录
  5. username="gamemanager" 用户名
  6. /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib  $srcdir \ 
  7. | while read files 
  8.     do 
  9.         for ip_addr in $ip 
  10.         do 
  11.             /usr/bin/rsync -vzrtopg --delete --progress $srcdir $username@$ip_addr:$dstdir # > /dev/null 2>&1
  12.             echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 
  13.         done 
  14.     done          
  15.  

6.运行脚本,在目录中添加删除文件都可以看到输出内容的.

你可能感兴趣的:(centos,同步,rsync,inotify,休闲)