rsync+inotify實現同步資料

來源:互聯網
上載者:User

標籤:rsync+inotify 資料即時同步

1、rsync

man一下sync,就會發現:sync-flush file system buffers,它是一個把緩衝區中的資料同步到檔案系統中的一個命令;而rsync其實就是remote rsync,它是一個遠程同步工具,兼具cp和scp的功能,rsync命令的使用幾乎和scp是一樣一樣的。rsync是通過超級守護進程xinetd進行觸發同步的。

1)優點:與cp和scp相比來說,rsync更快,更安全,支援增量備份。rsync在資料同步的過程中,不像cp一樣全部都拷貝,而是先去比對特徵碼,只有不一樣的才會去拷貝,如果一樣了,就不需再做多餘操作。通過使用rsync+crontab可以解決對即時性要求不是太高的情境。

2)缺點:在這個大資料年代,如果資料量非常大,你每做一次任務計劃,rsync都會先去遍曆目標目錄,把所有資料做一次特徵碼比對,然後進行差量傳輸,這個過程會是很漫長的,對於那些要求即時性更新比較高的企業來說,無疑是一場噩夢。rsync+inotify組合能夠即時的去監控我們的檔案系統,只有在資料改變時才會觸發它去同步!

rsync有4種模式

   1.本地模式。

   2.遠程shell模式

   3.查詢模式

   4.C/S模式

2、inotify

Inotify 是一種強大的、細粒度的、非同步檔案系統事件監控機制,linux核心從2.6.13起,加入了Inotify支援,通過Inotify可以監控檔案系統中添加、刪除,修改、移動等各種細微事件,利用這個核心介面,第三方軟體就可以監控檔案系統下檔案的各種變化情況,而inotify-tools就是這樣的一個第三方軟體。

3、rsync+inotify 好處

1)伺服器效能:rsync+crontab會定時去檢查是否有檔案更新,這勢必會造成伺服器效能下降;而rsync+inotify組合是觸發式更新,只有在資料檔案有變化時,才會去更新,因此相對前者而言,是提高了伺服器效能。

2)資料即時性:rsync+crontab是週期性任務計劃,不能保證資料的即時性;rsync+inotify組合是觸發式更新,只要有資料變化,就立刻同步更新。

rsync命令是快速、多用、遠程和本地檔案複製工具;

命令文法格式:

Local:  rsync [OPTION...] SRC... [DEST]

Access via remote shell:

  Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]

  Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

Access via rsync daemon:

Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

    rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

   rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

選項:

-v, --verbose:冗長資訊;

-r, --recursive:對目錄遞迴;


1.本地模式

rsync -rv /etc/passwd ./  

拷貝passwd 到目前的目錄 

2.遠程shell模式

rsync -rv /etc/passwd 172.18.11.12:/tmp  

把passwd拷貝到遠程主機上,類似於scp命令需要使用者密碼;

3.列表模式

rsync -r 172.18.11.12:/tmp 

查看遠程目錄下的檔案


重點是第四種模式,實現資料同步:

4.C/S模式,資料同步:

實驗環境:

master:172.18.11.11

slave:172.18.11.113



實驗目標:

實現master主機的/var/ftp/目錄下只要有檔案變化(可定義),會即時同步到slave主機上的/home/ftp目錄下。

在slave端:

]# vim /etc/rsyncd.conf

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/80/51/wKiom1c9qEzByHpkAABcd49QHok057.png" title="映像 2.png" alt="wKiom1c9qEzByHpkAABcd49QHok057.png" />

建立密碼檔案 /etc/rsyncd.pass 如下格式,並確保許可權為600或400

]# vim /etc/rsyncd.pass

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/4E/wKioL1c9qZyg9OZjAAAMZbeM8co553.png" title="映像 3.png" alt="wKioL1c9qZyg9OZjAAAMZbeM8co553.png" />

]# chmod 600 /etc/rsyncd.pass


啟動守護進程

]# rsync --daemon



]# netstat -tnlp|grep rsync

查看873連接埠監聽;


在master端:

]# vim /etc/rsyncd.pass

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/51/wKiom1c9qSrxOfJ5AAAKn5vwmq8889.png" title="映像 4.png" alt="wKiom1c9qSrxOfJ5AAAKn5vwmq8889.png" />

注意:此密碼檔案只輸入在slave端設定的密碼即可;


手動測試,master端passwd檔案是否能同步到slave端設定的目錄中;

]# rsync -avz /var/ftp/pub/passwd [email protected]::ftp --password-file=/etc/rsyncd.pass

解釋:

root為slave端指定的使用者;

172.18.11.113為slave端地址;

/etc/rsyncd.pass為存放slave端設定的指定使用者的密碼;


可在slave端的同步目錄查看是否收到passwd檔案;


安裝inotify-tools

]# yum -y install inotify-tools


編寫監控指令碼並載入到後台執行:

]# vim /root/rsync.sh 

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/80/51/wKiom1c9rBHCR25JAABuhoilF7o364.png" title="映像 5.png" alt="wKiom1c9rBHCR25JAABuhoilF7o364.png" />

將指令碼加入後台執行

]# sh inotify.sh &  


即時同步測試:

在master端:

]# for a in `seq 200`;do touch $a;done

建立200個檔案;

]# ll  --time-style=full-iso

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/80/51/wKiom1c9rzzg3yuJAACvkozzoYE307.png" title="映像 6.png" alt="wKiom1c9rzzg3yuJAACvkozzoYE307.png" />


再到slave端查看:

]# ll  --time-style=full-iso /home/ftp

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/80/4F/wKioL1c9sKCDKy63AADiw2jNsIM594.png" title="映像 8.png" alt="wKioL1c9sKCDKy63AADiw2jNsIM594.png" />

實現了資料即時同步。


rsync+inotify實現同步資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.