董秀蕾
摘 要:本文詳細(xì)闡述了在Linux系統(tǒng)之間使用Rsync自動(dòng)備份校園網(wǎng)應(yīng)用系統(tǒng)數(shù)據(jù)的方法。
關(guān)鍵詞:數(shù)據(jù)備份 Linux Rsync
中圖分類號(hào):TP309.3文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1673-8454(2009)19-0027-02
校園網(wǎng)建設(shè)的工作重心主要集中在保證網(wǎng)絡(luò)的正常運(yùn)行和提供良好的網(wǎng)絡(luò)服務(wù)。除此以外,數(shù)據(jù)備份也是網(wǎng)絡(luò)管理員的重要職責(zé)之一。對(duì)數(shù)據(jù)進(jìn)行自動(dòng)遠(yuǎn)程備份是保證數(shù)據(jù)安全的有效方法。
一、現(xiàn)狀
校園網(wǎng)中的應(yīng)用系統(tǒng),比如計(jì)費(fèi)系統(tǒng)和電子郵件系統(tǒng)中積累了大量的用戶數(shù)據(jù),包括用戶的費(fèi)用和郵件等重要信息,對(duì)于此類敏感又很重要的數(shù)據(jù)一定要做好備份。這些數(shù)據(jù)具有實(shí)時(shí)性的特點(diǎn),即信息隨時(shí)都在發(fā)生動(dòng)態(tài)變化。因此,要求能夠?qū)?shù)據(jù)做到周期性自動(dòng)跟蹤,反之,需要恢復(fù)數(shù)據(jù)時(shí)能夠恢復(fù)到離故障點(diǎn)較接近的時(shí)間點(diǎn),丟失的數(shù)據(jù)盡可能少且在大多數(shù)用戶的可接受范圍內(nèi)。
目前我校沒(méi)有為備份提供專用的存儲(chǔ)空間,在這種情況下,可以使用一臺(tái)性能相對(duì)穩(wěn)定并且磁盤(pán)空間較大的已被替換下來(lái)的服務(wù)器,作為存儲(chǔ)平臺(tái)。同時(shí)能夠找到一種相對(duì)靈活的備份方案實(shí)現(xiàn)備份需求。但是用什么方法將數(shù)據(jù)傳輸過(guò)來(lái)呢?
二、選擇方案
由于我校大多數(shù)應(yīng)用系統(tǒng)都使用Linux操作系統(tǒng),在Linux操作系統(tǒng)中數(shù)據(jù)備份方法通常有:(1)Linux系統(tǒng)中常用的備份工具tar、dump、restore等,但這些工具大多數(shù)適合本地備份,對(duì)不同主機(jī)之間的遠(yuǎn)程備份往往力不從心。(2)選擇商業(yè)化的備份和鏡像產(chǎn)品,但是這種產(chǎn)品通常價(jià)格昂貴。對(duì)于價(jià)格高的項(xiàng)目需要審批,從立項(xiàng)到實(shí)施周期長(zhǎng)。(3)編寫(xiě)腳本,使用FTP等工具定時(shí)傳輸數(shù)據(jù),但是這種方法的缺點(diǎn)是每次都要將所有文件和數(shù)據(jù)重新傳輸一遍,將要備份的文件和已備份文件沒(méi)有比較,不考慮哪些文件是新增加的和更新的。當(dāng)需要備份的數(shù)據(jù)量較大時(shí),更是需要較長(zhǎng)時(shí)間的網(wǎng)絡(luò)傳輸,效率低。(4)使用自由軟件——遠(yuǎn)程傳輸工具Rsync,Rsync是一個(gè)小巧而靈活但是功能強(qiáng)大的遠(yuǎn)程備份工具,它使用“Rsync演算法”提供一個(gè)非常快速的文件傳輸方法,使得本地和遠(yuǎn)端主機(jī)間的文檔達(dá)到同步。Rsync只有第一次備份時(shí)需要傳輸所有數(shù)據(jù)文件,以后傳輸數(shù)據(jù)時(shí)會(huì)比較兩組數(shù)據(jù),相同的不再傳輸,只傳輸發(fā)生變化的數(shù)據(jù)部分,因此速度相當(dāng)快,而且節(jié)省網(wǎng)絡(luò)帶寬。由此可以看出,選擇Rsync做備份工具是最佳選擇。
三、制定備份策略
實(shí)時(shí)數(shù)據(jù)備份對(duì)服務(wù)器和網(wǎng)絡(luò)帶寬的要求較高,因?yàn)椴煌5貍浞輹?huì)降低服務(wù)器性能,而且會(huì)造成網(wǎng)絡(luò)負(fù)荷過(guò)重。與提供良好的網(wǎng)絡(luò)服務(wù)相比,數(shù)據(jù)備份應(yīng)該是第二位的,當(dāng)出現(xiàn)爭(zhēng)搶資源時(shí)應(yīng)該讓位于網(wǎng)絡(luò)服務(wù)。因此需要制定一個(gè)折中的策略——選擇一個(gè)合適的時(shí)間間隔。白天服務(wù)器的訪問(wèn)量大,用戶操作頻繁,此時(shí)不適宜做備份,而晚上的訪問(wèn)量相對(duì)較低,系統(tǒng)和網(wǎng)絡(luò)都處于空閑的狀態(tài),此時(shí)做備份既可利用系統(tǒng)的低使用率也不會(huì)增加網(wǎng)絡(luò)負(fù)載。因此,選擇每天凌晨備份,一天的數(shù)據(jù)差別在用戶的可接受范圍內(nèi)。
四、實(shí)施方法
Rsync是以服務(wù)器/客戶端的方式工作的,較為特殊的一點(diǎn)是Rsync服務(wù)器和客戶端都使用同一個(gè)程序。啟動(dòng)服務(wù)器的時(shí)候需要指明以daemon方式運(yùn)行,表明啟動(dòng)的是服務(wù)器。而啟動(dòng)客戶端程序的時(shí)候則不需要指定daemon選項(xiàng)。
每臺(tái)需要備份數(shù)據(jù)的服務(wù)器在設(shè)置上都類似,因此以一臺(tái)服務(wù)器和一組待備份數(shù)據(jù)為例。例如,需要備份數(shù)據(jù)的服務(wù)器IP地址為10.0.0.1,該主機(jī)稱之為Rsync-server,程序以daemon方式運(yùn)行;作為存儲(chǔ)平臺(tái)的主機(jī)IP地址為10.0.0.200,運(yùn)行Rsync客戶端程序,該主機(jī)稱之為Rsync-client。Rsync程序默認(rèn)運(yùn)行在TCP的873端口,即Rsync-server會(huì)監(jiān)聽(tīng)873端口,等待對(duì)方的rsync連接。當(dāng)以認(rèn)證方式登錄時(shí),Rsync-server與Rsync-client連接時(shí)會(huì)檢查密碼是否相符,如果相符則開(kāi)始文件傳輸。
1.Rsync-server(10.0.0.1)的配置
Rsync-server需要設(shè)置以下幾項(xiàng):
明確需要建立備份的目錄
設(shè)置/etc/xinetd.d/rsync
設(shè)置/etc/rsyncd.conf
設(shè)置密碼文件
(1)目錄/udata以及子目錄中存有用戶數(shù)據(jù),需要備份。
(2)設(shè)定/etc/xinetd.d/rsync,確保文件中兩個(gè)參數(shù):
disable = no
server_args = --daemon
使用命令service xinetd restart,使設(shè)置生效,使rsync服務(wù)進(jìn)程以daemon方式運(yùn)行rsync。
(3)Rsync服務(wù)器最重要最復(fù)雜的就是配置文件/etc/rsyncd.conf,這個(gè)配置文件控制著Rsync服務(wù)器的認(rèn)證、訪問(wèn)、日志、可用模塊等信息。該文件由一個(gè)或多個(gè)模塊結(jié)構(gòu)組成。一個(gè)模塊定義是以方括弧中的模塊名開(kāi)始,直到下一個(gè)模塊名或者文件結(jié)束。每個(gè)模塊對(duì)應(yīng)一個(gè)需要備份的目錄。配置文件以行為單位,模塊中的行是一些參數(shù)賦值或注釋等。
uid = root
read only = yes
list = no
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 10.0.0.200
hosts deny = 0.0.0.0/32
[userdata]
path = /udata
ignore errors
read only = yes
list = no
auth users = secretuser
secrets file = /etc/rsyncd.secrets
前五行指定在daemon模式下運(yùn)行的Rsync-server是以root用戶的只讀方式運(yùn)行,指定日志和運(yùn)行時(shí)的進(jìn)程ID的存放位置,以及允許連接的Rsync客戶端地址等。這些選項(xiàng)是全局的。在模塊[userdata]中指定了需要備份的目錄,忽略了一些無(wú)關(guān)的IO錯(cuò)誤,不允許列文件,備份時(shí)需要認(rèn)證,及密碼文件的存放位置等。
(4)密碼文件的格式很簡(jiǎn)單,賬號(hào):密碼。例如,/etc/rsyncd.secrets的內(nèi)容可設(shè)為:
secretuser:secretpasswd123
注意,一定要設(shè)置密碼文件的屬主和權(quán)限,否則備份會(huì)失敗。
#chown root.root rsyncd.secrets
#chmod 600 rsyncd.secrets
2.Rsync-client(假設(shè)主機(jī)地址為10.0.0.200)的配置
Rsync需要設(shè)置如下幾項(xiàng):
規(guī)劃一個(gè)容量足夠大的獨(dú)立分區(qū),并設(shè)置好存儲(chǔ)目錄
編寫(xiě)備份指令文件
將指令加入crontab列表中,完成定時(shí)備份
(1)設(shè)置存儲(chǔ)目錄為/backup。
(2)編輯文件rsync-restore,并存放在某一目錄下,比如/目錄下,文件內(nèi)容為:
rsync-tvzrp-progress-delete secretuser@10.0.0.1::userdata /backup-passwd-file=/etc/rsyncd.pass
命令參數(shù)-tvzrp中的v是將傳輸過(guò)程顯示到屏幕中,z是傳輸時(shí)壓縮數(shù)據(jù),r是逐級(jí)保留目錄及目錄下文件,tp是保持文件原有屬性如權(quán)限、時(shí)間等參數(shù)。-progress指示詳細(xì)的進(jìn)度。-delete刪除在Rsync-client上存在而Rsync-server上不存在的額外文件,精確保存副本。這一選項(xiàng)對(duì)郵件服務(wù)器很有實(shí)施價(jià)值,如果不刪除已經(jīng)不存在的文件,比如用戶郵件,當(dāng)恢復(fù)數(shù)據(jù)時(shí),被用戶刪除過(guò)的郵件又會(huì)出現(xiàn)在用戶的郵箱當(dāng)中,這種莫名其妙的事情發(fā)生會(huì)給用戶造成困擾。-passwd-file:指定用于rsync服務(wù)器的用戶驗(yàn)證密碼。/etc/rsyncd.pass文件中指定訪問(wèn)密碼,內(nèi)容為:secretpasswd123(與Rsync-server的/etc/rsyncd.secrets文件中密碼一致),設(shè)置文件權(quán)限為讀寫(xiě) #chmod 600 rsyncd.pass。
注意,要修改rsync-restore文件的權(quán)限,否則備份不會(huì)成功。
#chmod 755 rsync-restore
(3)使用crontab命令定時(shí)備份文件,編輯如下內(nèi)容:
0 2 * * * /rsync-restore
這樣,每天凌晨2點(diǎn)Rsync-server就將待備份目錄/udata以及目錄下的文件以目錄樹(shù)結(jié)構(gòu)做鏡像自動(dòng)備份到Rsync-client的/backup目錄下。
五、結(jié)束語(yǔ)
當(dāng)需要恢復(fù)數(shù)據(jù)時(shí),在保證重新架設(shè)的應(yīng)用服務(wù)程序與原服務(wù)程序保持一致的前提下,只要將備份的整個(gè)目錄樹(shù)恢復(fù)到服務(wù)器相應(yīng)的目錄下即可。注意,備份實(shí)施過(guò)程中設(shè)置rsync相關(guān)文件時(shí),一定要設(shè)置使用權(quán)限,否則將導(dǎo)致備份失敗。一般來(lái)說(shuō),備份用戶數(shù)據(jù)比備份系統(tǒng)數(shù)據(jù)更頻繁一些,合理規(guī)劃備份方案,明確備份的內(nèi)容、備份時(shí)間及備份方式,并進(jìn)行適時(shí)備份可以有效防止重要數(shù)據(jù)的丟失。在日常工作中,備份是管理員的一項(xiàng)重要工作,掌握好備份技巧對(duì)管理員的工作很有幫助。
參考文獻(xiàn):
[1]用Rsync對(duì)網(wǎng)站進(jìn)行鏡像備份[EB/OL]. http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html
[2]Linux下的遠(yuǎn)程備份(鏡像)工具Rsync[EB/OL]. http://wuwd.blog.ubuntu.org.cn/2007/12/22/
(編輯:于黎明)