日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

rsynv+inotify触发试实时同步

發(fā)布時(shí)間:2025/5/22 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rsynv+inotify触发试实时同步 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、rsync的優(yōu)點(diǎn)與不足 與傳統(tǒng)的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份等優(yōu)點(diǎn),通過(guò)rsync可以解決對(duì)實(shí)時(shí)性要求不高的數(shù)據(jù)備份需求,例如定期的備份文件服務(wù)器數(shù)據(jù)到遠(yuǎn)端服務(wù)器,對(duì)本地磁盤(pán)定期做數(shù)據(jù)鏡像等。 隨著應(yīng)用系統(tǒng)規(guī)模的不斷擴(kuò)大,對(duì)數(shù)據(jù)的安全性和可靠性也提出的更好的要求,rsync在高端業(yè)務(wù)系統(tǒng)中也逐漸暴露出了很多不足,首先,rsync同步數(shù)據(jù)時(shí),需要掃描所有文件后進(jìn)行比對(duì),進(jìn)行差量傳輸。如果文件數(shù)量達(dá)到了百萬(wàn)甚至千萬(wàn)量級(jí),掃描所有文件將是非常耗時(shí)的。而且正在發(fā)生變化的往往是其中很少的一部分,這是非常低效的方式。其次,rsync不能實(shí)時(shí)的去監(jiān)測(cè)、同步數(shù)據(jù),雖然它可以通過(guò)linux守護(hù)進(jìn)程的方式進(jìn)行觸發(fā)同步,但是兩次觸發(fā)動(dòng)作一定會(huì)有時(shí)間差,這樣就導(dǎo)致了服務(wù)端和客戶端數(shù)據(jù)可能出現(xiàn)不一致,無(wú)法在應(yīng)用故障時(shí)完全的恢復(fù)數(shù)據(jù)。基于以上原因,rsync+inotify組合出現(xiàn)了! 二、 初識(shí)inotify Inotify 是一種強(qiáng)大的、細(xì)粒度的、異步的文件系統(tǒng)事件監(jiān)控機(jī)制,linux內(nèi)核從2.6.13起,加入了Inotify支持,通過(guò)Inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動(dòng)等各種細(xì)微事件,利用這個(gè)內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而inotify-tools就是這樣的一個(gè)第三方軟件。 在上面章節(jié)中,我們講到,rsync可以實(shí)現(xiàn)觸發(fā)式的文件同步,但是通過(guò)crontab守護(hù)進(jìn)程方式進(jìn)行觸發(fā),同步的數(shù)據(jù)和實(shí)際數(shù)據(jù)會(huì)有差異,而inotify可以監(jiān)控文件系統(tǒng)的各種變化,當(dāng)文件有任何變動(dòng)時(shí),就觸發(fā)rsync同步,這樣剛好解決了同步數(shù)據(jù)的實(shí)時(shí)性問(wèn)題。 #####inotify+rsync######## 服務(wù)端:192.168.232.128 ? 客戶端:192.168.232.134 發(fā)布服務(wù)器192.168.232.128 將/www2/data /www2/p_w_picpaths 實(shí)時(shí)同步到192.168.232.134 ########################## 1.服務(wù)端安裝inotify工具inotify-tools 由于inotify特性需要Linux內(nèi)核的支持,在安裝inotify-tools前要先確認(rèn)Linux系統(tǒng)內(nèi)核是否達(dá)到了2.6.13以上,如果Linux內(nèi)核低于2.6.13版本,就需要重新編譯內(nèi)核加入inotify的支持,也可以用如下方法判斷,內(nèi)核是否支持inotify: [root@localhost webdata]# uname -r 2.6.18-164.11.1.el5PAE [root@localhost webdata]# ll /proc/sys/fs/inotify 總計(jì) 0 -rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events -rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances -rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches 如果有上面三項(xiàng)輸出,表示系統(tǒng)已經(jīng)默認(rèn)支持inotify,接著就可以開(kāi)始安裝inotify-tools了。 可以到http://inotify-tools.sourceforge.net/下載相應(yīng)的inotify-tools版本,然后開(kāi)始編譯安裝: 2.安裝inotify #tar zxvf inotify-tools-3.14.tar.gz #cd inotify-tools-3.14 #./configure #make #make install #ll /usr/local/bin/inotifywa* -rwxr-xr-x 1 root root 37264 04-14 13:42 /usr/local/bin/inotifywait -rwxr-xr-x 1 root root 35438 04-14 13:42 /usr/local/bin/inotifywatch 3.客戶端安裝配置 rsync ####Rsync####### ####Stifle###### ####luo.hao##### ####qq:88524498#### #####stifles@126.com##### #vi /etc/rsyncd.conf uid = root gid = root use chroot = no max connections = 200 timeout = 600 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [www1] path = /www1/data ignore errors read only = false list = false hosts allow = 192.168.232.0/255.255.255.0 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [www01] path = /www1/p_w_picpaths ignore errors read only = false list = false hosts allow = 192.168.232.0/255.255.255.0 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password ============================================================= #echo "rsync_backup:654321" >/etc/rsync.password ? //寫(xiě)入密碼到密碼文件 #chmod 600 /etc/rsync.password ? ? ? ? ? ?//設(shè)置密碼文件權(quán)限為600讀寫(xiě) #cat /etc/rsync.password ? ? ?//查看密碼是否成功寫(xiě)入密碼文件 #ll /etc/rsync.password ? ? ? //查看密碼文件權(quán)限是否為600 #rsync --daemon ? ? ? ? ?//啟動(dòng)rsync #echo "/usr/bin/rsync --daemon" >>/etc/rc.local ?//將文件寫(xiě)入自啟動(dòng)文件中 #cat /etc/rc.local|grep daemon //查看是否成功寫(xiě)入 #ps -ef|grep rsync ?//顯示現(xiàn)行終端機(jī)下的所有程序并過(guò)濾出與rsync有關(guān)的 #pkill rsync ? ?//結(jié)束rsync #rsync --daemon ? ?//啟動(dòng)rsync ============================================================== 4.服務(wù)端: ==================================================================== #echo "654321" >/etc/rsync.password ? ?//將密碼654321寫(xiě)入密碼文件中 #chmod 600 /etc/rsync.password ? //設(shè)置密碼文件權(quán)限為600 #cat /etc/rsync.password ? ? ? ?//查看密碼是否成功寫(xiě)入密碼文件 #ll /etc/rsync.password ? ? ? //查看密碼文件權(quán)限是否成功寫(xiě)入600權(quán)限 ==================================================================== 5.配置內(nèi)容發(fā)布節(jié)點(diǎn)-----服務(wù)端128 #cd /home/shell #vi rsync.sh---------------腳本1(同步/www2/data 目錄) #!/bin/bash src=/www2/data/ dst1=www1 /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib ?$src \ | while read files do /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.password $src rsync_backup@192.168.232.134::$dst1 echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 done #vi rsync01.sh--------------------腳本2(同步/www2/p_w_picpaths 目錄) #!/bin/bash src=/www2/p_w_picpaths/ dst1=www01 /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib ?$src \ | while read files do /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.password $src rsync_backup@192.168.232.134::$dst1 echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 done 這個(gè)腳本的作用就是通過(guò)inotify監(jiān)控文件目錄的變化,進(jìn)而觸發(fā)rsync進(jìn)行同步操作,由于這個(gè)過(guò)程是一種主動(dòng)觸發(fā)操作,通過(guò)系統(tǒng)內(nèi)核完成的,所以,比起那些遍歷整個(gè)目錄的掃描方式,效率要高很多。 有時(shí)會(huì)遇到這樣的情況:向inotify監(jiān)控的目錄(這里是/web/wwwroot/)寫(xiě)入一個(gè)很大文件時(shí),由于寫(xiě)入這個(gè)大文件需要一段時(shí)間,此時(shí)inotify就會(huì)持續(xù)不停的輸出該文件被更新的信息, 這樣就會(huì)持續(xù)不停的觸發(fā)rsync去執(zhí)行同步操作,占用了大量系統(tǒng)資源,那么針對(duì)這種情況,最理想的做法是等待文件寫(xiě)完后再去觸發(fā)rsync同步。 在這種情況下,可以修改inotify的監(jiān)控事件,即:“-e close_write,delete,create,attrib”。 接著,將這個(gè)腳本命名為rsync.sh,放到/www2目錄下,然后給定可執(zhí)行權(quán)限,放到后臺(tái)運(yùn)行: chmod 755 /www2/rsync.sh /www2/rsync.sh & 最后,將此腳本加入系統(tǒng)自啟動(dòng)文件: echo ?“/www2/rsync.sh &”>>/etc/rc.local 這樣就完成了內(nèi)容發(fā)布節(jié)點(diǎn)的所有配置工作。 6.測(cè)試rsync+inotify實(shí)時(shí)同步功能 服務(wù)端128: #cd /www2/data [root@CentOS5 data]# ll total 0 [root@CentOS5 data]# touch 2 [root@CentOS5 data]# building file list ...? 2 files to consider building file list ...? 2 files to consider ./ 2 0 100% ? ?0.00kB/s ? ?0:00:00 (xfer#1, to-check=0/2) 2 0 100% ? ?0.00kB/s ? ?0:00:00 (xfer#1, to-check=0/2) sent 100 bytes ?received 44 bytes ?288.00 bytes/sec total size is 0 ?speedup is 0.00 sent 94 bytes ?received 38 bytes ?264.00 bytes/sec total size is 0 ?speedup is 0.00 building file list ...? 2 files to consider building file list ...? 2 files to consider sent 55 bytes ?received 16 bytes ?142.00 bytes/sec total size is 0 ?speedup is 0.00 sent 55 bytes ?received 16 bytes ?142.00 bytes/sec total size is 0 ?speedup is 0.00 [root@CentOS5 data]# ll total 0 -rw-r--r-- 1 root root 0 Jul 27 14:29 2 [root@CentOS5 data]#? 查看客戶端134: [root@CentOS5 www1]# ll /www1/data/ total 0 -rw-r--r-- 1 root root 0 Jul 27 14:29 2 [root@CentOS5 www1]#? 至此完成服務(wù)器的實(shí)時(shí)同步 注1:#vi /etc/rsyncd.conf uid = root gid = root 需使用root用戶,不然報(bào)錯(cuò),用戶權(quán)限拒絕

轉(zhuǎn)載于:https://blog.51cto.com/stifle/672160

總結(jié)

以上是生活随笔為你收集整理的rsynv+inotify触发试实时同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。