rysnc +inotify

正式安裝,官網下載rsync穩定版本,而後進行安裝編譯。linux

cd  /usr/src ;wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz  web

tar  xzf  rsync-3.0.7.tar.gz  && cd rsync-3.0.7 && ./configure --shell

prefix=/usr/local/rsync  &&make &&make install服務器

安裝完畢,配置rsync配置文件,默認/etc/不存在rsyncd.conf配置文件,須要手動建立,配置內容爲以下:cat  rsyncd.confapp

uid = nobody
gid = nobody
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[shell]
read only = yes
path = /root/shell
comment = shell
auth users = ceshi                     用戶非系統用戶 
secrets file = /etc/rsync.pas        密碼文件名能夠隨意
hosts allow = 192.168.10.128ssh

啓動服務器端RSYNC主進程,/usr/local/rsync/bin/rsync  --daemon ,監聽端口TCP 873webapp

設置rsync服務器端同步密鑰:ui

vi  /etc/rsync.passpa

ceshi:123123orm

保存完畢,chmod 600 /etc/rsync.pas設置權限爲宿主用戶讀寫。     

最後在客戶端配置同步密鑰和命令,以下設置便可同步。

vi  /etc/rsync.pas  輸入服務器端配置的密碼(只需密碼不需用戶名 ):

123123

chmod 600 /etc/rsync.pas      服務端客戶端權限必須700或600  不然沒法讀取密碼文件 

保存便可開始同步:執行以下語句  

Rsync -aP --delete ceshi@192.168.0.100::shell /usr/local/webapps   --bwlimit=200  --password-file=/etc/rsync.pas   

*/usr/local/webapps爲客戶端的目錄,@前test是認證的用戶名;IP後面倆個冒號shell爲rsync服務器端的模塊名稱。--bwlimit=200限速200K

參數詳解

 

Rsync配置參數說明:

[www]   #要同步的模塊名

path = /usr/local/webapps  #要同步的目錄

comment = www    #這個名名稱無所謂,最後模塊名一直)

read only = no   # no客戶端可上傳文件,yes只讀

write only = no  # no客戶端可下載文件,yes不能下載

list = yes      #是否提供資源列表

auth users =test  #登錄系統使用的用戶名,沒有默認爲匿名。

hosts allow = 192.168.0.10,192.168.0.20  #本模塊容許經過的IP地址

hosts deny = 192.168.1.4     #禁止主機IP

secrets file=/etc/rsync.pas  #密碼文件存放的位置

 

 

 

 

 

-a, ––archive

歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性。

––exclude=PATTERN

指定排除一個不須要傳輸的文件匹配模式

––exclude-from=FILE

從 FILE 中讀取排除規則

––include=PATTERN

指定須要傳輸的文件匹配模式

––delete

刪除那些接收端還有而發送端已經不存在的文件(保持2邊數據徹底一致,客戶端增長數據也會刪除)

-P

等價於 ––partial ––progress

-v, ––verbose

詳細輸出模式

-q, ––quiet

精簡輸出模式

––rsyncpath=PROGRAM

指定遠程服務器上的 rsync 命令所在路徑

––password-file=FILE

從 FILE 中讀取口令,以免在終端上輸入口令,

一般在 cron 中鏈接 rsync 服務器時使用

7.4.2Rsync基於SSH同步
除了可使用rsync密鑰進行同步以外,還有一個比較簡單的同步方法就是基於linux ssh來同步。具體方法以下:
rsync -aP --delete root@192.168.0.10:/data/www/webapps /data/www/webapps ,若是想每次同步不輸入密碼,須要作Linux主機之間免密碼登陸。

實時同步

rysnc +inotify

除了可使用rsync密鑰進行同步以外,還有一個比較簡單的同步方法就是基於linux ssh來同步。具體方法以下:

rsync  -aP  --delete  root@192.168.0.10:/data/www/webapps  /data/www/webapps ,若是想每次同步不輸入密碼,須要作Linux主機之間免密碼登陸。

 Rsync實時同步配置

在企業平常web應用中,某些特殊的數據須要要求保持跟服務器端實時同步,那咱們該如何來配置呢?如何來實現呢?這裏能夠採用rsync+inotify來實現需求。

Inotify 是一個 Linux特性,它監控文件系統操做,好比讀取、寫入和建立。Inotify 反應靈敏,用法很是簡單,而且比 cron 任務的繁忙輪詢高效得多。

Rsync安裝完畢後,須要安裝inotify文件檢查軟件。同時爲了同步的時候不須要輸入密碼,這樣可使用ssh免密鑰方式進行同步。

安裝inotify-tools-3.14.tar.gz 軟件,tar –xzf  inotify-tools-3.14.tar.gz ;./configure  ;make

;make install 便可。配置auto_inotify.sh同步腳本,內容以下:

#!/bin/sh
src=/root/shell
des=/root/shell
ip=192.168.10.128
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
for i in $ip
  do
  /usr/local/rsync/bin/rsync -aP --delete $src root@$ip:$des
  done
done

 

在服務器端後臺啓動該腳本,nohup  sh  auto_inotify.sh  & ,在服務器端目錄新建或者刪除,客戶端都會實時進行相關操做。

相關文章
相關標籤/搜索