一種基于變化文件監(jiān)控的快速文件備份方法
【專利摘要】本發(fā)明提供一種基于變化文件監(jiān)控的快速文件備份方法,其具體實(shí)現(xiàn)過程為:設(shè)置文件監(jiān)控模塊,文件列表生成模塊,文件路徑排序模塊及文件備份模塊;文件備份模塊調(diào)用文件列表生成模塊進(jìn)行備份文件列表的生成;文件列表生成模塊讀取文件監(jiān)控模塊監(jiān)控到的變化文件路徑,并將這些路徑傳輸給文件路徑排序模塊;文件路徑排序模塊對傳遞給它的路徑進(jìn)行排序,并將排序結(jié)果返饋給文件列表生成模塊;文件備份模塊將上一次的備份文件列表與本次的進(jìn)行合并,生成最終的備份文件列表,并根據(jù)此列表進(jìn)行文件備份。該一種基于變化文件監(jiān)控的快速文件備份方法和現(xiàn)有技術(shù)相比,簡化了備份內(nèi)容索引與備份內(nèi)容定位,從而降低成本,實(shí)用性強(qiáng),易于推廣。
【專利說明】一種基于變化文件監(jiān)控的快速文件備份方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)災(zāi)備【技術(shù)領(lǐng)域】,具體的說是一種基于變化文件監(jiān)控的快速文件備份方法。
【背景技術(shù)】
[0002]隨著IT信息系統(tǒng)建設(shè)進(jìn)程中的數(shù)據(jù)大集中時代的到來,數(shù)據(jù)災(zāi)備成為了數(shù)據(jù)中心建設(shè)中必須要考慮的重要一環(huán)。所謂的數(shù)據(jù)災(zāi)備即是采用某種措施或技術(shù)提供一定的數(shù)據(jù)冗余,當(dāng)原始數(shù)據(jù)不可用時,可以使用冗余的數(shù)據(jù)進(jìn)行頂替或是恢復(fù)。可見,數(shù)據(jù)災(zāi)備中的根本性技術(shù)即是數(shù)據(jù)備份。按照備份數(shù)據(jù)的粒度不同,可以分為兩種,一種為塊級別的數(shù)據(jù)備份,常見的如RAID技術(shù),遠(yuǎn)程復(fù)制技術(shù)等;另一種為文件級別的數(shù)據(jù)備份,其多被數(shù)據(jù)備份軟件所使用。塊級別的數(shù)據(jù)備份由于位于文件系統(tǒng)層之下,具備性能高,恢復(fù)速度快的特點(diǎn);但也正是由于其在文件系統(tǒng)之下,其同樣存在著備份粒度較大,無法和多種文件系統(tǒng)進(jìn)行兼容的缺點(diǎn)。文件級別的數(shù)據(jù)備份使用文件系統(tǒng)的API進(jìn)行備份,其速度不如塊級別備份,但其粒度可以精確到單個文件,并且由于使用操作系統(tǒng)提供的API,對多種文件系統(tǒng)均具備通用性。在使用上,塊級別的數(shù)據(jù)備份多為存儲系統(tǒng)提供的附加功能,用于對整個磁盤進(jìn)行備份;文件級別的數(shù)據(jù)備份多為數(shù)據(jù)備份軟件提供的功能,用于對文件夾或文件進(jìn)行備份。本專利集中于文件級別的數(shù)據(jù)備份。
[0003]文件級別的數(shù)據(jù)備份大體有3種備份策略,全量備份,差異備份及增量備份。在用戶的使用場景中,多見全量備份與增量備份的組合,提升增量備份的效率,可明顯縮短備份窗口,提升整體的備份速度。
[0004]增量備份的關(guān)鍵點(diǎn)在于確定本次增量需要備份哪些文件,即確定變化的文件。其可采用傳統(tǒng)的掃描方式,但其掃描時間會比較長;也可使用歸檔位的方式,但需要具體的文件系統(tǒng)給予支持。基于此,現(xiàn)提供一種采用變化文件監(jiān)控的方式進(jìn)行變化文件的確定,不需要文件系統(tǒng)給予支持,提高了通用性的快速文件備份方法。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的技術(shù)任務(wù)是解決現(xiàn)有技術(shù)的不足,提供一種采用主動監(jiān)控的方式來確定變化的文件,增量備份直接使用記錄的變化文件列表進(jìn)行文件備份、有效地縮短了備份窗口、提升了備份效率、基于變化文件監(jiān)控的快速文件備份方法。
[0006]本發(fā)明的技術(shù)方案是按以下方式實(shí)現(xiàn)的,該一種基于變化文件監(jiān)控的快速文件備份方法,其具體實(shí)現(xiàn)過程為:
一、設(shè)置以下四個模塊:文件監(jiān)控模塊,文件列表生成模塊,文件路徑排序模塊及文件備份模塊,其中
文件監(jiān)控模塊,負(fù)責(zé)監(jiān)控指定目錄的文件變化;
文件列表生成模塊,為文件備份模塊生成需要備份的文件列表;
文件路徑排序模塊,對文件列表生成模塊生成的文件列表進(jìn)行排序,以使得備份的文件順序與用戶進(jìn)行文件目錄瀏覽的順序相同,以便于進(jìn)行備份文件的查找;
文件備份模塊,其作用是對文件進(jìn)行實(shí)質(zhì)性的備份;
二、文件備份模塊調(diào)用文件列表生成模塊進(jìn)行備份文件列表的生成;
三、文件列表生成模塊讀取文件監(jiān)控模塊監(jiān)控到的變化文件路徑,并將這些路徑傳輸給文件路徑排序模塊;
四、文件路徑排序模塊對傳遞給它的路徑進(jìn)行排序,并將排序結(jié)果返饋給文件列表生成模塊;
五、最后,文件備份模塊將上一次的備份文件列表與本次的進(jìn)行合并,生成最終的備份文件列表,并根據(jù)此列表進(jìn)行文件備份。
[0007]所述文件監(jiān)控模塊包括WINDOWS系統(tǒng)文件監(jiān)控、LINUX系統(tǒng)文件監(jiān)控及UNIX系統(tǒng)文件監(jiān)控。
[0008]所述文件備份模塊在單次備份中,只備份文件列表中指定的各個文件
所述文件備份過程還包括步驟六,即上一次的備份文件列表與本次的備份文件列表進(jìn)行合并的步驟:依次讀取上一次的備份文件列表中與本次的備份文件列表中各一個路徑,并進(jìn)行比較,取較小的生成最終的備份文件列表,如果兩個路徑相同,則取本次的備份文件列表中的生成最終的務(wù)份文件列表。
[0009]所述步驟六的詳細(xì)過程為:
1)讀取上一次的備份文件列表中的結(jié)點(diǎn)A,如果讀取錯誤,則將本次的備份文件列表內(nèi)容寫入備份文件列表;
2)讀取本次的備份文件列表中的結(jié)點(diǎn)B,如果讀取錯誤,則將上一次的備份文件列表內(nèi)容寫入到備份文件列表;
3)比較路徑A和路徑B,如果A=B,則將A寫入備份文件列表中,并重復(fù)進(jìn)入步驟I);如果A < B,則將A寫入備份列表中,并讀取上一次的備份文件列表中的結(jié)點(diǎn)A,如果讀取錯誤,則將本次的備份文件列表內(nèi)容寫入到備份文件列表中,如果讀取正確,則重復(fù)進(jìn)入比較路徑A和路徑B ;如果A > B,則將B寫入備份列表中,并讀取本次的備份文件列表中的結(jié)點(diǎn)B,如果讀取錯誤,則將上一次的備份文件列表內(nèi)容寫入到備份文件列表,如果讀取正確,則重復(fù)進(jìn)入比較路徑A和路徑B。
[0010]本發(fā)明與現(xiàn)有技術(shù)相比所產(chǎn)生的有益效果是:
本發(fā)明的一種基于變化文件監(jiān)控的快速文件備份方法采用主動監(jiān)控的方式來確定變化的文件,在進(jìn)行增量備份時,直接備份文件監(jiān)控所截獲到的文件路徑,而省卻了對文件系統(tǒng)掃描以確定需要備份的文件這一過程,從而縮短備份窗口,提高增量備份的效率,設(shè)計(jì)了適合于目錄瀏覽的文件路徑排序算法,使用此算法對備份文件列表進(jìn)行排序,保證了備份文件列表中的文件路徑順序即是按目錄逐級瀏覽時的順序,簡化了備份內(nèi)容索引與備份內(nèi)容定位,從而降低成本,實(shí)用性強(qiáng),易于推廣。
【專利附圖】
【附圖說明】
[0011]附圖1為快速文件備份方法的結(jié)構(gòu)圖。
[0012]附圖2為進(jìn)行增量備份時文件列表合并的時序圖?!揪唧w實(shí)施方式】
[0013]下面結(jié)合附圖對本發(fā)明的一種基于變化文件監(jiān)控的快速文件備份方法作以下詳細(xì)說明。
[0014]如附圖1、圖2所示,現(xiàn)提供一種基于變化文件監(jiān)控的快速文件備份方法,其具體實(shí)現(xiàn)過程為:
一、設(shè)置以下四個模塊:文件監(jiān)控模塊,文件列表生成模塊,文件路徑排序模塊及文件備份模塊,其中
文件監(jiān)控模塊,負(fù)責(zé)監(jiān)控指定目錄的文件變化;
文件列表生成模塊,為文件備份模塊生成需要備份的文件列表;
文件路徑排序模塊,對文件列表生成模塊生成的文件列表進(jìn)行排序,以使得備份的文件順序與用戶進(jìn)行文件目錄瀏覽的順序相同,以便于進(jìn)行備份文件的查找;
文件備份模塊,其作用是對文件進(jìn)行實(shí)質(zhì)性的備份;
二、文件備份模塊調(diào)用文件列表生成模塊進(jìn)行備份文件列表的生成;
三、文件列表生成模塊讀取文件監(jiān)控模塊監(jiān)控到的變化文件路徑,并將這些路徑傳輸給文件路徑排序模塊;
四、文件路徑排序模塊對傳遞給它的路徑進(jìn)行排序,并將排序結(jié)果返饋給文件列表生成模塊;
五、最后,文件備份模塊將上一次的備份文件列表與本次的進(jìn)行合并,生成最終的備份文件列表,并根據(jù)此列表進(jìn)行文件備份。
[0015]所述文件監(jiān)控模塊包括WINDOWS系統(tǒng)文件監(jiān)控、LINUX系統(tǒng)文件監(jiān)控及UNIX系統(tǒng)文件監(jiān)控。
[0016]所述文件備份模塊在單次備份中,只備份文件列表中指定的各個文件。
[0017]所述文件備份過程還包括步驟六,即上一次的備份文件列表與本次的備份文件列表進(jìn)行合并的步驟。之所以需要將上一次的備分列表與本次的備份文件列表進(jìn)行合并,是因?yàn)閭浞菸募斜碇袘?yīng)包含用戶備份目錄的所有文件信息,而本次的備份文件列表中只有增量部份的信息,因此需要與上次的合成,以生成用戶備份目錄的所有文件信息。在圖2中,Catalog部份為上一次的備份文件列表,IncFileList為本次的備份文件列表。,該步驟的內(nèi)容為:依次讀取上一次的備份文件列表中與本次的備份文件列表中各一個路徑,并進(jìn)行比較,取較小的生成最終的備份文件列表,如果兩個路徑相同,則取本次的備份文件列表中的生成最終的務(wù)份文件列表。
[0018]所述步驟六的詳細(xì)過程為:
1)讀取上一次的備份文件列表中的結(jié)點(diǎn)A,如果讀取錯誤,則將本次的備份文件列表內(nèi)容寫入備份文件列表;
2)讀取本次的備份文件列表中的結(jié)點(diǎn)B,如果讀取錯誤,則將上一次的備份文件列表內(nèi)容寫入到備份文件列表;
3)比較路徑A和路徑B,如果A=B,則將A寫入備份文件列表中,并重復(fù)進(jìn)入步驟I);如果A < B,則將A寫入備份列表中,并讀取上一次的備份文件列表中的結(jié)點(diǎn)A,如果讀取錯誤,則將本次的備份文件列表內(nèi)容寫入到備份文件列表中,如果讀取正確,則重復(fù)進(jìn)入比較路徑A和路徑B ;如果A > B,則將B寫入備份列表中,并讀取本次的備份文件列表中的結(jié)點(diǎn)B,如果讀取錯誤,則將上一次的備份文件列表內(nèi)容寫入到備份文件列表,如果讀取正確,則重復(fù)進(jìn)入比較路徑A和路徑B。
[0019]在進(jìn)行具體的文件列表排序時,采用如下表所述的算法進(jìn)行排序。本算法保證了文件路徑的排列順序即為用戶進(jìn)行目錄瀏覽時的順序。
[0020]此算法保證按照目錄樹進(jìn)行排序,同一父目錄下的按照文件在前,文件夾在后的順序進(jìn)行排序,文件或文件夾同類比較時按照字符序排序。
[0021]@ret:-1 for Α<Β, O for A=Bj I for A>B./
int PathCmp (char 木A, char ^B) {
int i = 0;
bool isFolderNameA = false;
bool isFoIderNameB = false;
while (A[i]&&B[i]&&A[i] == B[i]) i++;
isFolderNameA = IsFolderName (A, i) ;// 判斷當(dāng)前位置是否是在一個 Folder 中,對 于’ 特殊情況算是在folder中,對于’ \0’不算在folder中 isFoIderNameB = IsFolderName(B,i); if (isFolderNameA == isFoIderNameB){ if (A[i] == V,)return -1; if(B[i] == ‘ )return I; return A[i] - B[i];
}
if (!isFolderNameA)return -1;
if(!isFoIderNameB)return I;
return 0;
}
上表中所描述的算法為比較兩個路徑的算法,對備份文件列表中的每個路徑使用此算法進(jìn)行比較,即完成了排序。
[0022]以上所述僅為本發(fā)明的實(shí)施例而已,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于變化文件監(jiān)控的快速文件備份方法,其特征在于其具體實(shí)現(xiàn)過程為: 一、設(shè)置以下四個模塊:文件監(jiān)控模塊,文件列表生成模塊,文件路徑排序模塊及文件備份模塊,其中 文件監(jiān)控模塊,負(fù)責(zé)監(jiān)控指定目錄的文件變化; 文件列表生成模塊,為文件備份模塊生成需要備份的文件列表; 文件路徑排序模塊,對文件列表生成模塊生成的文件列表進(jìn)行排序,以使得備份的文件順序與用戶進(jìn)行文件目錄瀏覽的順序相同,以便于進(jìn)行備份文件的查找; 文件備份模塊,其作用是對文件進(jìn)行實(shí)質(zhì)性的備份; 二、文件備份模塊調(diào)用文件列表生成模塊進(jìn)行備份文件列表的生成; 三、文件列表生成模塊讀取文件監(jiān)控模塊監(jiān)控到的變化文件路徑,并將這些路徑傳輸給文件路徑排序模塊; 四、文件路徑排序模塊對傳遞給它的路徑進(jìn)行排序,并將排序結(jié)果返饋給文件列表生成模塊; 五、最后,文件備份模塊將上一次的備份文件列表與本次的進(jìn)行合并,生成最終的備份文件列表,并根據(jù)此列表進(jìn)行文件備份。
2.根據(jù)權(quán)利要求1所述的一種基于變化文件監(jiān)控的快速文件備份方法,其特征在于:所述文件監(jiān)控模塊包括WINDOWS系統(tǒng)文件監(jiān)控、LINUX系統(tǒng)文件監(jiān)控及UNIX系統(tǒng)文件監(jiān)控。
3.根據(jù)權(quán)利要求1所述的一種基于變化文件監(jiān)控的快速文件備份方法,其特征在于:所述文件備份模塊在單次備份中,只備份文件列表中指定的各個文件 根據(jù)權(quán)利要求1?3中任一所述的一種基于變化文件監(jiān)控的快速文件備份方法,其特征在于:所述文件備份過程還包括步驟六,即上一次的備份文件列表與本次的備份文件列表進(jìn)行合并的步驟:依次讀取上一次的備份文件列表中與本次的備份文件列表中各一個路徑,并進(jìn)行比較,取較小的生成最終的備份文件列表,如果兩個路徑相同,則取本次的備份文件列表中的生成最終的務(wù)份文件列表。
4.根據(jù)權(quán)利要求4所述的一種基于變化文件監(jiān)控的快速文件備份方法,其特征在于:所述步驟六的詳細(xì)過程為: 1)讀取上一次的備份文件列表中的結(jié)點(diǎn)A,如果讀取錯誤,則將本次的備份文件列表內(nèi)容寫入備份文件列表; 2)讀取本次的備份文件列表中的結(jié)點(diǎn)B,如果讀取錯誤,則將上一次的備份文件列表內(nèi)容寫入到備份文件列表; 3)比較路徑A和路徑B,如果A=B,則將A寫入備份文件列表中,并重復(fù)進(jìn)入步驟I);如果A < B,則將A寫入備份列表中,并讀取上一次的備份文件列表中的結(jié)點(diǎn)A,如果讀取錯誤,則將本次的備份文件列表內(nèi)容寫入到備份文件列表中,如果讀取正確,則重復(fù)進(jìn)入比較路徑A和路徑B ;如果A > B,則將B寫入備份列表中,并讀取本次的備份文件列表中的結(jié)點(diǎn)B,如果讀取錯誤,則將上一次的備份文件列表內(nèi)容寫入到備份文件列表,如果讀取正確,則重復(fù)進(jìn)入比較路徑A和路徑B。
【文檔編號】G06F17/30GK103995757SQ201410196549
【公開日】2014年8月20日 申請日期:2014年5月12日 優(yōu)先權(quán)日:2014年5月12日
【發(fā)明者】王旭, 穆裕 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司