Incremental rsync Linux 增量備份 備份 同步

rsync異地增量備份 資料同步無落差

2018-10-23
增量備份方式若透過日常排程的方式來進行,可能會發生備份資料不一致的落差,若能改用即時備份的解決方案,在來源端的資料發生異動時,就立即把資料備份至目的端,問題就能夠圓滿解決。這裡使用Linux核心內建的inotify模組以及rsync備份程式來實際示範即時備份的操作。
備份作業是每個系統管理人員日常作業中不可或缺的一環。但是當資料量過於龐大,可能會造成備份作業矌日廢時,甚至會造成網路的壅塞,因此可利用增量備份(Incremental Backup)的方式進行備份。

增量備份方式在備份之前會先比對來源端與目的端的差異,並僅將差異的部分備份至目的端,可有效地減少備份的資料量,但是備份作業通常會採取日常排程的模式(例如每日凌晨備份),所以此種方式可能會因為時間的差距而造成資料內容的落差。對此,本文將提出一種即時備份的解決方案,當來源端的資料一旦發生異動時,就即時地將資料備份至目的端,而所使用的軟體如表1所示。

表1 實作所需套件

關於inotify模組的說明

在Linux系統核心(Kernel)2.6.13之後的版本提供了inotify模組,這是一種可用來即時偵測檔案系統變化如系統內的目錄或檔案發生新增、修改、刪除等事件的模組,並產生相對應的事件。

本文實作將利用inotify模組來監控欲備份的目錄或檔案,一旦發現目錄或檔案有變動,就立即呼叫rsync備份程式,將相關的變動即時備份至異地,藉此保持兩邊資料的一致。

首先,利用下列指令來確認系統是否支援inotify模組功能:

grep INOTIFY_USER /boot/config-$(
uname -r)

如果回應「CONFIG_INOTIFY_USER=y」,即表示目前的系統支援inotify模組功能,可以利用此功能來監控系統上實體檔案系統的變化。但特別要注意的一點是,inotify無法有效地監控系統上的虛擬目錄或是裝置檔案,例如「/proc」目錄內的檔案。

在說明如何使用inotify之前,先說明inotify所使用的專有名稱:

‧實例(Instances):一個實例可表示為一個監控作業,在一個監控作業中,可同時設定監控多個實體的檔案或目錄。

‧隊列(Queue):在成功設定實例之後,就會將實例排入隊列中,等待系統的執行。

‧監看(Watches):亦即實際監控所設定的實例。

‧事件(Event):當所監控的檔案或目錄發生異動的時候,便會產生相對應的事件。

而針對事件(Event)的部分,提供的常用事件,如下所述:

IN_ACCESS:當檔案或目錄被存取時,就會觸發此事件。

IN_MODIFY:當檔案的內容被修改時,便會觸發此事件。

IN_ATTRIB:當檔案或目錄的屬性(例如修改時間、存取權限)被改變時,就會觸發此事件。

IN_OPEN:當檔案被開啟時,就會觸發此事件。

IN_CLOSE_WRITE:當一個已開啟的檔案或目錄被關閉時,便會觸發此事件。

IN_MOVED_FROM:當被更動(moved)或被更名(rename)的檔案或目錄是來自於被監控的目錄,便會觸發此事件。

IN_MOVED_TO:當被更動或被更名的檔案或目錄被放置到被監控的目錄,就會觸發此事件。

IN_DELETE:當檔案或目錄被刪除時,便會觸發此事件。

IN_CREATE:當檔案或目錄建立時,將會觸發此事件。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!