1、問題:password file must not be other-accessible
/usr/bin/rsync -vzrtopg --port=36369 --delete --exclude ".svn/" --password-file=/etc/rsync/rsync_users.pass 10.0.1.112::sltweb /var/www/html/
2、解決方法
将password-file設定為600權限
chmod 600 XXX.pass
#########################################################################################################
參考文獻:真正的inotify+rsync實時同步 徹底告别同步慢【優質】
Rsync的指令格式可以為以下六種:
1 2 3 4 5 6 | |
https://blog.csdn.net/weixin_33949359/article/details/94686948
對應于以上六種指令格式,rsync有六種不同的工作模式:
1)拷貝本地檔案。當SRC和DES路徑資訊都不包含有單個冒号”:”分隔符時就啟動這種工作模式。如:rsync -a /data /backup
2)使用一個遠端shell程式(如rsh、ssh)來實作将本地機器的内容拷貝到遠端機器。當DST路徑位址包含單個冒号”:”分隔符時啟動該模式。如:rsync -avz *.c foo:src
3)使用一個遠端shell程式(如rsh、ssh)來實作将遠端機器的内容拷貝到本地機器。當SRC位址路徑包含單個冒号”:”分隔符時啟動該模式。如:rsync -avz foo:src/bar /data
4)從遠端rsync伺服器中拷貝檔案到本地機。當SRC路徑資訊包含”::”分隔符時啟動該模式。如:rsync -av [email protected]::www /databack
5)從本地機器拷貝檔案到遠端rsync伺服器中。當DST路徑資訊包含”::”分隔符時啟動該模式。如:rsync -av /databack [email protected]::www
6)列遠端機的檔案清單。這類似于rsync傳輸,不過隻要在指令中省略掉本地機資訊即可。如:rsync -v rsync://172.16.78.192/www
rsync參數的具體解釋如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | |
#########################################################################################################
rsync伺服器架設(資料同步|檔案增量備份)
#########################################################################################################
作為系統運維人員,在工作中大多會遇到叢集伺服器的維護,在規模不大的時候,采用手動部署逐台更新項目配置,可能會應付的了不會出問題,可是一旦業務擴增伺服器的規模擴大一個級别,則手動逐台更改配置檔案則效率開始變的地下和容易産生錯誤。 inotify+rsync可以實作,一點變動,多點實時更新的效果。inotify技術從kernel 2.6.13開始正式并入核心,RHEL5已經支援。 下面是安裝計劃步驟
1、 确認系統對inotify的支援 , 看看是否有 /proc/sys/fs/inotify/目錄,以确定核心是否支援inotify。 [[email protected] inotify]# ls /proc/sys/fs/inotify/ max_queued_events max_user_instances max_user_watches
2、安裝程式,inotify 和 rsync rsync 一般系統會預設安裝好,直接使用即可,如不清楚,請看網上查找相關rsync的文章。 下載下傳inotify ; 位址: http://inotify-tools.sourceforge.net/
編譯安裝 ./configure make make install 安裝完畢後會有一個inotifywait指令,可以通過man inotifywait 檢視具體的指令幫助。 主要通過inotifywait 監控具體目錄和檔案的變動。 inotify 可以監視的檔案系統事件包括: IN_ACCESS,即檔案被通路 IN_MODIFY,檔案被 write IN_ATTRIB,檔案屬性被修改,如 chmod、chown、touch 等 IN_CLOSE_WRITE,可寫檔案被 close IN_CLOSE_NOWRITE,不可寫檔案被 close IN_OPEN,檔案被 open IN_MOVED_FROM,檔案被移走,如 mv IN_MOVED_TO,檔案被移來,如 mv、cp IN_CREATE,建立新檔案 IN_DELETE,檔案被删除,如 rm IN_DELETE_SELF,自删除,即一個可執行檔案在執行時删除自己 IN_MOVE_SELF,自移動,即一個可執行檔案在執行時移動自己 IN_UNMOUNT,宿主檔案系統被 umount IN_CLOSE,檔案被關閉,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) IN_MOVE,檔案被移動,等同于(IN_MOVED_FROM | IN_MOVED_TO)
注:上面所說的檔案也包括目錄。
inotifywait 指令的常用參數包括: -m, --monitor 保持一直監聽 -r, --recursive 若有多級目錄循環遞歸每一層。 -q, --quiet 靜默式運作 -e <event>, --event <event> create,move,delete,modify 3、實際示例:
#cat inotify.sh
#!/bin/sh src=/usr/local/nginx/conf/ des=inotifyhome ip="172.16.1.2 172.16.1.4 172.16.1.5" user=sysman /usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib $src | while read file do for i in $ip do rsync -vzrtopgl --delete --progress --files-from=file.list --password-file=/etc/rsyncd.pwd $src done done
4、運作腳本
[[email protected]]# inotify.sh &
####################################################################################
rsync+inotify優勢[引用]:
1、伺服器性能:rsync隻能實作定時更新,無論網站有無檔案更新,rsync都會按着定時任務去檢查檔案是否有更新,當資料檔案較大時會使伺服器性能下降;而rsync+inotify為觸發式更新,也就是說隻有當某個檔案發生改動時才會更新,這樣一來對伺服器性能影響較小
2、資料實時性:如果選擇rsync,每隔多長時間同步一次資料是個問題,時間越短,對性能影響就越大。時間太長,使用者/編輯無法接受。采用rsync+inotify可實作實時更新,當源伺服器檔案有更新時,其它伺服器立即更新
源伺服器:192.168.128.10
目标伺服器:192.168.128.11
1,源伺服器rsync配置
uid = root
gid = root
use chroot = no
max connections =20
strict modes =yes
log file =/var/log/rsyncd.log
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log format = %t %a %m %f%b
[web]
path =/var/www/html/
auth users = root
read only = no
hosts allow =192.168.128.0/24
list = no
uid = root
gid = root
secrets file =/etc/rsync.passwd
ignore errors =yes
[[email protected] ~]# vi/etc/rsyncd.secrets
root:111111
[[email protected] ~]# chmod600 /etc/rsyncd.secrets
[[email protected] ~]#/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
2,目标伺服器inotify、rsync配置
擷取且編譯inotify:
wget http://jaist.dl.sourceforge.net/sourceforge/inotify-tools/inotify-tools-3.13.tar.gz
[[email protected] ~]# cd/usr/local/src/
[[email protected] src]# tarzxf inotify-tools-3.13.tar.gz
[[email protected] src]# cdinotify-tools-3.13
[[email protected]]# ./configure
[[email protected]]# make && makeinstall
[[email protected]]# cd
[[email protected] ~]# vi/etc/rsyncd.secrets
111111
[[email protected] ~]# vi/etc/rsync.sh
#!/bin/bash
src="/var/www/html" #源伺服器同步目錄
dst=web #目标伺服器rsync子產品
ip="192.168.128.11" #目标伺服器IP,可添加多台同步伺服器
/usr/local/bin/inotifywait-mrq -e create,move,delete,modify ${src} | while read
file
do
for i in $ip
do
rsync-avz --password-file=/etc/rsyncd.secrets --delete --progress${src}/* [email protected]${ip}::${dst}
done
done
[[email protected] ~]# chmod +x/etc/rsync.sh
[[email protected] ~]# nohup/etc/rsync.sh &
inotify指令參數:
-m 是保持一直監聽
-r 是遞歸檢視目錄
-q 是列印出事件
-ecreate,move,delete,modify,attrib
監聽 建立 移動 删除 寫入 事件
--timefmt指定輸出時的輸出格式 例:--timefmt '%d/%m/%y-%H:%M'
--format:'%T %w%f'指定輸出的格式 例:--format '%T %w%f'
create:建立檔案
move:檔案移動
delete:檔案被删除
modify:是監控檔案被write
attrib:檔案屬性被修改
rsync -aHqzt $SRC $DST
-a 存檔模式
-H 儲存硬連接配接
-q 制止非錯誤資訊
-z 壓縮檔案資料在傳輸
-t 維護修改時間
-delete 删除于多餘檔案
當要排出同步某個目錄時,為rsync添加--exculde=PATTERN參數,注意,路徑是相對路徑。詳細檢視man rsync
當要排除都某個目錄的事件監控的處理時,為inotifywait添加--exclude或--excludei參數。詳細檢視man inotifywait
另:
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \
-e modify,delete,create,attrib \
${src} \
上面的指令傳回的值類似于:
10/03/09 15:31 /wwwpic/1
這3個傳回值做為參數傳給read,關于此處,有人是這樣寫的:
inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F;do
細化了傳回值。
說明: 當檔案系統發現指定目錄下有如上的條件的時候就觸發相應的指令,是一種主動告之的而非我用循環比較目錄下的檔案的異動,該程式
在運作時,更改目錄内的檔案時系統核心會發送一個信号,這個信号會觸發運作rsync指令,這時會同步源目錄和目标目錄。
--timefmt:指定輸出時的輸出格式
--format: '%T %w%f'指定輸出的格式
二.關于inotify介紹
Inotify 是檔案系統事件監控機制,作為 dnotify 的有效替代。dnotify 是較早核心支援的檔案監控機制。Inotify 是一種強大的、細粒度的
、異步的機制,它滿足各種各樣的檔案監控需要,不僅限于安全和性能。
inotify 可以監視的檔案系統事件包括:
IN_ACCESS,即檔案被通路
IN_MODIFY,檔案被 write
IN_ATTRIB,檔案屬性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可寫檔案被 close
IN_CLOSE_NOWRITE,不可寫檔案被 close
IN_OPEN,檔案被 open
IN_MOVED_FROM,檔案被移走,如 mv
IN_MOVED_TO,檔案被移來,如 mv、cp
IN_CREATE,建立新檔案
IN_DELETE,檔案被删除,如 rm
IN_DELETE_SELF,自删除,即一個可執行檔案在執行時删除自己
IN_MOVE_SELF,自移動,即一個可執行檔案在執行時移動自己
IN_UNMOUNT,宿主檔案系統被 umount
IN_CLOSE,檔案被關閉,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,檔案被移動,等同于(IN_MOVED_FROM | IN_MOVED_TO)
注:上面所說的檔案也包括目錄。
3,測試
啟動rsync.sh監控腳本之後,源伺服器目錄/var/www/html下有增、添、改、删檔案操作時,将會實時同步到目标伺服器的/var/www/html目錄。