一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法
【專利摘要】本發(fā)明涉及一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,包括以下步驟:1)備份客戶端獲取需要備份的源文件,設(shè)定備份類型,生成文件列表,所述的備份類型包括全備份或差異備份;2)判斷是否存在與文件列表相關(guān)的編錄信息文件,若是,則直接執(zhí)行步驟3),若否,則生成一個(gè)空的編錄信息文件后,執(zhí)行步驟3);3)根據(jù)文件列表和編錄信息文件計(jì)算差異數(shù)據(jù),并保存至備份服務(wù)器中;4)獲取此次備份的備份類型,若備份類型為全備份,則備份服務(wù)器對(duì)每個(gè)文件執(zhí)行差異合成備份,執(zhí)行步驟5),若備份類型為差異備份,則直接執(zhí)行步驟5);5)備份結(jié)束。與現(xiàn)有技術(shù)相比,本發(fā)明具有數(shù)據(jù)量少、網(wǎng)絡(luò)的利用率高、數(shù)據(jù)存儲(chǔ)空間少、處理速度快等優(yōu)點(diǎn)。
【專利說明】6丟失。為了保證數(shù)據(jù)持續(xù)可用,最好的方個(gè)或者多個(gè)位置。
1技術(shù)被開發(fā)出來用于數(shù)據(jù)的冗余存儲(chǔ),像獨(dú)立磁盤冗余陣列)系統(tǒng)可以用來保證在1]可以保證在計(jì)算機(jī)受到自然災(zāi)害、被盜或
即在設(shè)定的時(shí)間點(diǎn)啟動(dòng)備份任務(wù)。在這種基以確定文件是否被更改過,如果文件被更明顯的缺陷就是,就算是文件一個(gè)字節(jié)都未分。特別是當(dāng)文件的尺寸很大時(shí),備份所帶
題,則使用另一種實(shí)時(shí)的備份方式,即利用向文件中寫入的數(shù)據(jù)。當(dāng)文件有變化時(shí),就I然解決了上面?zhèn)浞荽笪募膯栴},但是也寸,這種備份方式會(huì)將這些變化的數(shù)據(jù)存儲(chǔ)次,要實(shí)時(shí)監(jiān)控文件的寫操作,需要在系統(tǒng),
中是否存在當(dāng)前文件的編錄信息,若是,貝1]丨執(zhí)行步驟3.3);
2 口下公式求得當(dāng)前文件所對(duì)應(yīng)的哈希塊長
122表示的是11對(duì)3122求余數(shù);
十算的哈希塊長度I為單位,計(jì)算每一塊數(shù)-表,將哈希表、哈希塊長度和文件記錄信息
份服務(wù)器,即當(dāng)前文件的備份類型為“全備:錄在編錄信息文件中的文件最后修改時(shí)間丸行步驟3.7);
希塊長度匕并設(shè)置當(dāng)前文件的當(dāng)前位置為分”,從“差異備份”中讀取所有數(shù)據(jù)塊記錄
戸讀取相應(yīng)位置所描述的數(shù)據(jù),并寫入新的備份”中讀取數(shù)據(jù)寫入到新的“全備份”中,
,
〔次“全備份”之前的所有“全備份”以及“差
文件時(shí)間點(diǎn)及文件名稱執(zhí)行如下步驟:‘差異備份”以及其對(duì)應(yīng)的“全備份”,從去個(gè)數(shù)據(jù)塊執(zhí)行如下判斷:如果是相同的數(shù)6,并返回給客戶端,如果是差異數(shù)據(jù),則從.完所有的數(shù)據(jù)塊。
,只備份差異數(shù)據(jù)。因此需要備份數(shù)據(jù)大小又減少備份的數(shù)據(jù)量。
I異數(shù)據(jù),因此在通過網(wǎng)絡(luò)備份到遠(yuǎn)端服務(wù)范圍內(nèi)保證不同的數(shù)據(jù)一定有不同的哈希I到一種快速哈希算法,最終數(shù)據(jù)是否相同,
,上述的快速哈希算法計(jì)算出來的哈希值,士希值,稱為“慢哈?!薄K龅目焖俟K?希的計(jì)算可以通過滑動(dòng)窗口的方式進(jìn)行,的兩個(gè)字節(jié)即可以取得。類似的算法包括的強(qiáng)度高的哈希算法包括105、104、1、
包括備份服務(wù)器和備份客戶端。備份服務(wù)客戶端由“備份/恢復(fù)模塊”以及“差異數(shù)
I份服務(wù)器的地址,然后向備份客戶端指定需要備份的源文件生成文件列表I并查詢果不存在,則生成一個(gè)空的編錄信息文件。羊數(shù)據(jù)計(jì)算模塊”。所述的編錄信息文件包,并指定其類型01??,并輸出相同哈希對(duì)對(duì)I及長度)到“備份/恢復(fù)模塊”,并指定其字節(jié),并返回步驟8。如果未找到相應(yīng)的)5哈希值不相同,則執(zhí)行步驟0。
個(gè)字節(jié),然后返回步驟8。由于我們采用了亥方法的特征就是,只需要使用將移出與移I 8步驟時(shí),8計(jì)算哈希的速度就會(huì)非???,0
2為特殊塊,以表示文件的處理已經(jīng)結(jié)所示的格式,并被“備份/恢復(fù)模塊”備份
10文件的信息,說明這個(gè)文件是第一次備計(jì)算出一個(gè)哈希數(shù)據(jù)塊大小1:
艮余數(shù),8122為文件打16的大小。數(shù)據(jù)的過程。當(dāng)要恢復(fù)某個(gè)文件時(shí),備份客〔件名稱。當(dāng)備份服務(wù)器接收到對(duì)應(yīng)的時(shí)間
卜“差異備份”,以及其對(duì)應(yīng)的“全備份”,然
塊記錄信息,并對(duì)每個(gè)塊執(zhí)行如下判斷:如取數(shù)據(jù)中所描述的數(shù)據(jù),并返回給客戶端。女據(jù)返回給客戶端,直到處理完所有的數(shù)據(jù)
恢復(fù)結(jié)束。
【權(quán)利要求】
1.一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,包括以下步驟: 1)備份客戶端獲取需要備份的源文件,設(shè)定備份類型,并根據(jù)源文件生成文件列表,所述的備份類型包括“全備份”或“差異備份”; 2)判斷是否存在與文件列表相關(guān)的編錄信息文件,若是,則直接執(zhí)行步驟3),若否,則生成一個(gè)空的編錄信息文件后,執(zhí)行步驟3); 3)根據(jù)文件列表和編錄信息文件計(jì)算差異數(shù)據(jù),并保存至備份服務(wù)器中; 4)獲取此次備份的備份類型,若備份類型為“全備份”,則備份服務(wù)器對(duì)每個(gè)文件執(zhí)行差異合成備份,執(zhí)行步驟5),若備份類型為“差異備份”,則直接執(zhí)行步驟5); 5)備份結(jié)束。
2.根據(jù)權(quán)利要求1所述的一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,所述的編錄信息文件包括哈希表、文件備份時(shí)使用的哈希塊長度和文件記錄信息,所述的記錄信息包括文件名稱、文件大小和文件最后修改時(shí)間。
3.根據(jù)權(quán)利要求2所述的一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,所述的步驟3)具體為: 3.1)從文件列表中取得下一個(gè)需備份的文件作為當(dāng)前文件,判斷當(dāng)前文件是否為空,若是,則執(zhí)行步驟4),若否,則執(zhí)行步驟3.2); 3.2)根據(jù)文件名稱判斷編錄信息文件中是否存在當(dāng)前文件的編錄信息,若是,則當(dāng)前文件為第一次備份,執(zhí)行步驟3.6),若否,則執(zhí)行步驟3.3); 3.3)獲取當(dāng)前文件的大小SIZE,利用如下公式求得當(dāng)前文件所對(duì)應(yīng)的哈希塊長度L:
L=Ll+[ (LI % SIZE) / (SIZE / LI)] 其中,U= (IOg2 SIZE){^SIZE),Ll% SIZE 表示的是 LI 對(duì) SIZE 求余數(shù); 3.4)從當(dāng)前文件開頭起,以步驟3.3)計(jì)算的哈希塊長度L為單位,計(jì)算每一塊數(shù)據(jù)的“快哈?!迸c“慢哈?!?,形成當(dāng)前文件的哈希表,將哈希表、哈希塊長度和文件記錄信息保存至編錄信息文件中; 3.5)將當(dāng)前文件的完整數(shù)據(jù)保存至備份服務(wù)器,即當(dāng)前文件的備份類型為“全備份”,返回步驟3.1); 3.6)獲取當(dāng)前文件的修改時(shí)間,并與記錄在編錄信息文件中的文件最后修改時(shí)間進(jìn)行比較,若相同,則返回步驟3.1),若不同,則執(zhí)行步驟3.7); 3.7)獲取當(dāng)前文件對(duì)應(yīng)的哈希表和哈希塊長度L,并設(shè)置當(dāng)前文件的當(dāng)前位置為O ; 3.8)判斷當(dāng)前位置到文件末尾的數(shù)據(jù)塊的長度是否小于L,若是,則輸出窗口自上一個(gè)相同塊以來滑過的數(shù)據(jù)塊以及該數(shù)據(jù)塊為差異數(shù)據(jù)塊,執(zhí)行步驟3.11),若否,則從當(dāng)前位置以L為窗口長度計(jì)算窗口中數(shù)據(jù)塊的“快哈希”,并判斷哈希表中是否存在相同值的“快哈?!保羰?,則執(zhí)行步驟3.9),若否,則執(zhí)行步驟3.10); 3.9)計(jì)算當(dāng)前數(shù)據(jù)塊的“慢哈?!保袛嘣诰哂邢嗤摹翱旃!钡墓?duì)中是否存在相同的“慢哈希”,若是,則說明當(dāng)前數(shù)據(jù)塊與該哈希對(duì)所對(duì)應(yīng)的數(shù)據(jù)塊相同,則輸出窗口自上一個(gè)相同塊以來滑過的數(shù)據(jù)塊為差異數(shù)據(jù)塊,并輸出查找到的相同數(shù)據(jù)塊在對(duì)應(yīng)文件中的位置信息,將當(dāng)前 位置向后移動(dòng)一個(gè)窗口長度,返回步驟3.8),若否,則執(zhí)行步驟3.10); 3.10)將當(dāng)前位置向后移動(dòng)一個(gè)字節(jié),即滑動(dòng)一個(gè)字節(jié),返回步驟3.8);.3.11)將輸出的所有差異數(shù)據(jù)塊以及相同數(shù)據(jù)塊信息作為差異數(shù)據(jù)保存至備份服務(wù)器中,即當(dāng)前文件的備份類型為“差異備份”。
4.根據(jù)權(quán)利要求3所述的一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,所述的“快哈?!睘榭焖俟K惴ㄓ?jì)算的哈希值,所述的“慢哈?!睘楦邚?qiáng)度哈希算法計(jì)算的哈希值; 所述的快速哈希算法計(jì)算包括Rabin-Karp算法或Adler32算法,所述的高強(qiáng)度哈希算法包括 MD5、MD4、SHA-U SHA-2 或 SHA-3。
5.根據(jù)權(quán)利要求3所述的一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,所述的哈希塊長度L的下限為400K字節(jié),上限為512K字節(jié)。
6.根據(jù)權(quán)利要求3所述的一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,所述的步驟4)中的差異合成備份具體為: . 4.1)判斷文件列表中的所有文件是否均為第一次備份,若是,則執(zhí)行步驟5),若否,則執(zhí)行步驟4.2); .4.2)從當(dāng)前時(shí)間點(diǎn)到第一次備份的時(shí)間點(diǎn)之間的所有文件執(zhí)行如下步驟: .4.2.1)判斷當(dāng)前文件的備份類型是否為“全備份”,若是,則執(zhí)行下一個(gè)文件的合成,若否,則執(zhí)行步驟4.2.2); . 4.2.2)查找當(dāng)前文件所對(duì)應(yīng)的“全備份”,從“差異備份”中讀取所有數(shù)據(jù)塊記錄信息,并對(duì)每個(gè)數(shù)據(jù)塊執(zhí)行如下判斷: 如果是相同的數(shù)據(jù)塊,則從“全備份”中讀取相應(yīng)位置所描述的數(shù)據(jù),并寫入新的“全備份”中;如果是差異數(shù)據(jù),則從當(dāng)前的“差異備份”中讀取數(shù)據(jù)寫入到新的“全備份”中,直到處理完所有的數(shù)據(jù)塊,然后執(zhí)行步驟4.2.3); . 4.2.3)完成“全備份”的合成后,刪除本次“全備份”之前的所有“全備份,,以及“差異備份”數(shù)據(jù),并更新編錄信息文件。
7.根據(jù)權(quán)利要求6所述的一種基于哈希的遠(yuǎn)程差異合成備份實(shí)現(xiàn)方法,其特征在于,需要恢復(fù)備份數(shù)據(jù)時(shí),根據(jù)指定的恢復(fù)文件時(shí)間點(diǎn)及文件名稱執(zhí)行如下步驟: 從指定的時(shí)間點(diǎn)向前查找文件的第一個(gè)“差異備份”以及其對(duì)應(yīng)的“全備份”,從“差異備份”中讀取所有數(shù)據(jù)塊記錄信息,并對(duì)每個(gè)數(shù)據(jù)塊執(zhí)行如下判斷:如果是相同的數(shù)據(jù)塊,則從“全備份”中讀 取數(shù)據(jù)中所描述的數(shù)據(jù),并返回給客戶端,如果是差異數(shù)據(jù),則從“差異備份”中讀取數(shù)據(jù)返回給客戶端,直到處理完所有的數(shù)據(jù)塊。
【文檔編號(hào)】G06F17/30GK103838645SQ201410002008
【公開日】2014年6月4日 申請(qǐng)日期:2014年1月2日 優(yōu)先權(quán)日:2014年1月2日
【發(fā)明者】葉佑群 申請(qǐng)人:上海愛數(shù)軟件有限公司