rsync+inotify的实现
一:rsync簡介:
rsync是一個強大的數(shù)據(jù)同步工具,它具有cp,scp的大部分功能,并在此基礎(chǔ)上進行擴展,它可以自動比較兩個文件的差異實現(xiàn)同步功能。它還可以實現(xiàn)異地同步,對實現(xiàn)目錄同步非常方便。
二:rsync的工作模式:
shell模式,也稱為本地模式
遠程shell模式,可以利用ssh協(xié)議承載其遠程傳輸過程;
列表模式,僅列出源中的內(nèi)容,-nv
服務(wù)模式,此時rsync工作為守護進程,能接收客戶端的數(shù)據(jù)同步請求
三:rsync可用命令選項:
-a:歸檔保留原文件的屬性?
-p:保留原文件的權(quán)限
-t:保留文件的時間戳
-l:保留文件的符號鏈接
-g:保留文件的數(shù)組
-o:保留文件的屬主
-D:保留設(shè)備文件
-n:同步測試不執(zhí)行
-v:詳細輸出模式
-q:靜默模式
-c:開啟校驗功能
-r:遞歸復(fù)制
-e ssh:使用ssh作為傳輸承載
-z:壓縮后傳輸
--progress:顯示進度條
--stats:顯示如何執(zhí)行壓縮和傳輸
注意:rsync命令中,如果原路徑是目錄,且給復(fù)制路徑時末尾有/,則會復(fù)制目錄中的內(nèi)容,而非目錄本身,如果末尾沒有/,則會同步目錄本身及目錄中的所有文件;目標(biāo)路徑末尾是否有/無關(guān)緊要;
四:rsync的服務(wù)模式的實現(xiàn):
?由于rsync工作屬于瞬時進程,因此要有xinetd代為監(jiān)聽,我們就要安裝xinetd并開啟
設(shè)定rsync服務(wù)器端 A 主機(172.16.249.220):yum -y install xinetd,chkconfig rsync on
為rsync提供配置文件 /etc/rsyncd.conf
我們可以使用rpm -ql rsync 查看都生了哪些文件
這里有一個實例配置文件 我們可以參考這個文件寫如下。
啟動服務(wù):service xinetd start 監(jiān)聽與873/tcp
此時我們可以用B主機172.16.249.218做測試如下:
服務(wù)端啟用用戶認(rèn)證的功能
我們需要修改配置文如下:
注意:我們只需加上最后兩行,但是我們在創(chuàng)建/etc/rsyncd.passwd 這個文件后要給以600或者400的權(quán)限,否則默認(rèn)不能使用用戶認(rèn)證功能。
密碼文件的格式如下:username:passwd 密碼不能超過8位
5.結(jié)合inotify實現(xiàn)監(jiān)控服務(wù)器端數(shù)據(jù)變化。
?1.首先下載inotify-tools 工具
?2.先用uname -r 查看是內(nèi)核版本
[root@guzenghui?rc.d]#?uname?-r 2.6.32-431.el6.x86_64 [root@guzenghui?rc.d]#?ll?/proc/sys/fs/inotify/ total?0 -rw-r--r--?1?root?root?0?Aug?25?02:25?max_queued_events -rw-r--r--?1?root?root?0?Aug?25?02:25?max_user_instances -rw-r--r--?1?root?root?0?Aug?25?02:25?max_user_watches顯示以上信息表示可以使用inotify工具
6.在客戶端上為inotify提供腳本使其監(jiān)控客戶端數(shù)據(jù)是否發(fā)生變化,若是發(fā)生變化就通知服務(wù)器來同步數(shù)據(jù)腳本內(nèi)容如下:
1?#/bin/bash2?src=/tmp3?des=tools4?ip=172.16.249.2205?6?/usr/local/bin/inotifywait?-mrq?--timefmt?'%d/%m/%y/%H:%M'?--format?'%T%w%f'?????-e?modify,delete,create,attrib?$src?|?while?read?file7???do8??????rsync?-vzrtopg?--delete?--progress?$src?tom@$ip::$des?--password-file=/etc/rsyncd.passwd?&&echo?"$src?has?been?resynced"9?done其中:src表示客戶端要同步給服務(wù)端的目錄,des表示服務(wù)器存放同步數(shù)據(jù)的位置
此時我們就可以在客戶端上修改/tmp目錄下的內(nèi)容,就可以看到服務(wù)器端同步到數(shù)據(jù)
我們在測試的不讓腳本在后臺運行,此時我們就可以清楚的看到數(shù)據(jù)同步過程。
7.給其權(quán)限 chmod +x /etc/rc.d/inotify ?將腳本放到/etc/rc.d/inotify下開機自啟動.
五:總結(jié)
? 將客戶端也保存一份inotify.passwd 這樣就不用每次輸入密碼了,權(quán)限也要改成600,內(nèi)容不能加
用戶名只存放密碼。 ??
轉(zhuǎn)載于:https://blog.51cto.com/germanygu/1544183
總結(jié)
以上是生活随笔為你收集整理的rsync+inotify的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: make memuconfig的问题:'
- 下一篇: ENTBOOST V1.0 发布,开源企