正式安裝,官網下載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主機之間免密碼登陸。
在企業平常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 & ,在服務器端目錄新建或者刪除,客戶端都會實時進行相關操做。