Centos 的inotify和rsync文件實時同步

今天要作兩臺服務器,做爲cdn的源頭,兩臺服務器內容文件要同步.web

一臺主Master:192.168.1.230sql

一臺備份slave:192.168.1.236centos

操做系統爲centos 5.6 x86_64 .默認安裝了rsyncbash

1. 咱們只須要在Master上安inotify-tools這個工具服務器

下載地址.ssh

解壓,按照INSTALL說明安裝好.ide

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這個這樣就不用改權限也能成功(不建議).spa

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.運行腳本,在目錄中添加刪除文件均可以看到輸出內容的.

相關文章
相關標籤/搜索