增量備份方式若透過日常排程的方式來進行,可能會發生備份資料不一致的落差,若能改用即時備份的解決方案,在來源端的資料發生異動時,就立即把資料備份至目的端,問題就能夠圓滿解決。這裡使用Linux核心內建的inotify模組以及rsync備份程式來實際示範即時備份的操作。
了解rsync備份程式
說起開源碼社群中的備份軟體,相信許多人腦海裡應該都會浮現rsync軟體。rsync是一種異地備份軟體,與一般備份軟體不同的是,rsync採用增量備份的方式,此類備份方式在每次備份前會先比較兩邊資料的差異,然後僅將差異的資料備份過去,而非備份全部的資料。rsync的運作方式分為以下兩種:
‧伺服器(Server)模式:以常駐(Daemon)的方式運作,亦即以伺服器模式來服務(預設通訊埠為873),通常會在目的端運作,接收其他主機的備份資訊。
‧客戶端(Client)模式:以一般程式方式運作,可視為使用者端(Client)程式,通常用在來源端主機上,將資料備份到備份主機上運作。
安裝rsync的過程很簡單,可使用「yum install rsync」指令來安裝rsync。安裝完成後,rsync軟體提供名稱為「rsync」的主程式來執行備份作業,以下是rsync常用的參數選項:
-b:表示要產生備份檔。當目的端上已存在同樣的檔案時,就將原先的檔案重新命名為其他的檔名,在此組態下,可利用--suffix子選項來命名備份檔案名稱的前綴檔名。另外,也可以指定--backup-dir子選項來設定備份檔的存放位置。
-u:在備份時會略過所有已經存在於目的端,且文件時間比要備份的檔案為新的檔案。
-l:要保留符號連結(Symbolic Link)型式的檔案。
-p:表示要保留檔案的權限資訊。
-o:要保留檔案擁有者資訊(僅對擁有者為root有效)。
-g:將保留檔案所屬群組資訊。
-t:表示要保留檔案時間資訊。
-r:表示以遞迴的方式來備份資料,包括所要備份目錄下的所有子目錄。
-a:等同於設定-rlptgoD等組態。
-D:表示要保留設備檔案資訊(僅對擁有者為root有效)。
--delete:刪除來源端已經不存在但在目的端存在的檔案。
--force:當目的端的目錄被覆蓋時,就強制先刪除該目錄。
--daemon:表示rsync將以常駐程式的型式來執行,亦即以伺服器的型式來執行。
除了可利用參數選項的方式來設定外,如果rsync是以伺服器的型式來執行時,也可利用設定組態檔的方式來設定相關的組態(檔名為rsyncd.conf),其常用的組態設定如下例所述(其中#為註解):
[myrestore] #可設定備份代號,名稱可
自訂
path = /restore
#設定備份檔案要存放的目錄位置
uid = root
#設定所使用的使用者權限
gid = root
#設定所使用的群組權限
secrets file = /etc/rsyncd.sec
rets #設定認證所使用密碼檔位置,
必須在這個檔案中設定來源端的帳號和
密碼
接下來設定「/etc/rsyncd.secrets」檔案,此檔案格式為「帳號:密碼」,設定如下:
rsync:rsyncpwd
然後,將此檔案的權限設為「600」,並將擁有者設為「root」,執行指令內容如下:
chown root:root /etc/rsyncd.secrets
#更新檔案擁有者為root
chmod 600 /etc/rsyncd.secrets
#重新設定檔案權限為600
在設定完目的端的密碼檔後,接下來設定來源端的密碼檔(/etc/rsyncd.secrets),與目的端的密碼檔不同的是,在此來源端的密碼僅須設定密碼資訊(本例中為rsyncpwd)即可。
同樣地,此檔案也須設定擁有者為「root」並將權限設為「600」,如此就可以完成rsync目的端與來源端的組態設定。
開始動手實作
在本文中,將分成兩種情境來說明。第一種情況為單純地將備份資料從來源端以rsync程式備份到目的端,設定過程如圖4所示。
|
▲圖4 將備份資料從來源端以rsync程式備份至目的端。 |
一開始,必須先在目的端的系統上設定「rsyncd.conf」,相關的設定內容如下所示: