操作系統(tǒng)熱備份方法、裝置及文件系統(tǒng)重構(gòu)方法
【專利摘要】本發(fā)明涉及信息安全領(lǐng)域,公開(kāi)了一種操作系統(tǒng)熱備份方法、裝置及文件系統(tǒng)重構(gòu)方法。本發(fā)明中,直接對(duì)數(shù)據(jù)塊而不是文件進(jìn)行備份,如果在備份過(guò)程中有覆蓋性寫入操作,則在覆蓋前先將要被覆蓋的數(shù)據(jù)塊保存到臨時(shí)文件中,備份時(shí)如果數(shù)據(jù)塊存在于臨時(shí)文件中,則直接備份臨時(shí)文件中的數(shù)據(jù)塊,這樣備份到的數(shù)據(jù)塊都是開(kāi)始備份那一時(shí)刻的數(shù)據(jù),保證了備份數(shù)據(jù)的完整性和一致性,而且在對(duì)操作系統(tǒng)的備份過(guò)程中該操作系統(tǒng)仍可以正常運(yùn)行?;隍?qū)動(dòng)級(jí)的數(shù)據(jù)塊備份技術(shù),增加了對(duì)增量備份和差量備份的完美支持,可以節(jié)省存儲(chǔ)空間,而且備份速度也更快。
【專利說(shuō)明】操作系統(tǒng)熱備份方法、裝置及文件系統(tǒng)重構(gòu)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,特別涉及操作系統(tǒng)熱備份和恢復(fù)技術(shù)。
【背景技術(shù)】
[0002]當(dāng)今社會(huì)科技發(fā)展日新月異,Windows操作系統(tǒng)作為桌面操作系統(tǒng)的主流,對(duì)系統(tǒng)容災(zāi)的需求顯得越來(lái)越重要,對(duì)Windows操作系統(tǒng)的備份在國(guó)內(nèi)基本沒(méi)有類似研究,即使有也是那種關(guān)閉操作系統(tǒng)后進(jìn)行的備份,也就是冷備份,無(wú)法滿足在操作系統(tǒng)運(yùn)行的過(guò)程中進(jìn)行系統(tǒng)備份。
[0003]這里,需要說(shuō)明的是,操作系統(tǒng)冷備份,是指操作系統(tǒng)在非運(yùn)行狀態(tài)下進(jìn)行備份。
[0004]現(xiàn)有技術(shù)是通過(guò)備份文件的方式來(lái)備份系統(tǒng),但是,這種技術(shù)存在如下方面的缺點(diǎn)。
[0005]( 1)備份文件時(shí)存在文件被其他程序以獨(dú)占的方式打開(kāi)而無(wú)法備份的現(xiàn)象;
[0006]( 2 )文件備份無(wú)法備份一些系統(tǒng)文件;
[0007](3)文件備份不能完全保證數(shù)據(jù)的一致性,比如備份一個(gè)文件時(shí),在備份了文件的上半部分時(shí)用戶將此文件內(nèi)容全部修改,此時(shí)再備下半部分的時(shí)侯,所備的上半部分是修改前的,下半部分是修改后的,所以上下兩部分存在數(shù)據(jù)不一致現(xiàn)象;
[0008](4)文件備份不能備份已刪掉但沒(méi)有在回收站中清除的文件;
[0009](5)文件備份的速度比較慢;
[0010](6)如果文件的文件夾深度太深,可能會(huì)耗費(fèi)大量?jī)?nèi)存甚至導(dǎo)致程序崩潰;
[0011](7)文件級(jí)別的備份很難支持增量備份和差量備份。
【發(fā)明內(nèi)容】
[0012]本發(fā)明的目的在于提供一種操作系統(tǒng)熱備份方法、裝置及文件系統(tǒng)重構(gòu)方法,這樣備份到的數(shù)據(jù)塊都是開(kāi)始備份那一時(shí)刻的數(shù)據(jù),保證了備份數(shù)據(jù)的完整性和一致性,而且在對(duì)操作系統(tǒng)的備份過(guò)程中該操作系統(tǒng)仍可以正常運(yùn)行。
[0013]為解決上述技術(shù)問(wèn)題,本發(fā)明的實(shí)施方式公開(kāi)了一種操作系統(tǒng)全量熱備份方法,包括以下步驟:
[0014]記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;
[0015]在備份過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù);
[0016]對(duì)使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0017]本發(fā)明的實(shí)施方式還公開(kāi)了一種操作系統(tǒng)增量熱備份方法,包括以下步驟:
[0018]對(duì)操作系統(tǒng)自上一次備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄;
[0019]記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;
[0020]在備份過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù);
[0021]根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0022]本發(fā)明的實(shí)施方式還公開(kāi)了一種操作系統(tǒng)差量熱備份方法,包括以下步驟:
[0023]對(duì)操作系統(tǒng)自上一次全量備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄;
[0024]記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;
[0025]在備份過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù);
[0026]根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0027]本發(fā)明的實(shí)施方式還公開(kāi)了一種文件系統(tǒng)重構(gòu)方法,包括以下步驟:
[0028]利用上文所述的任一種操作系統(tǒng)熱備份方法,對(duì)操作系統(tǒng)進(jìn)行熱備份;
[0029]根據(jù)原分區(qū)的保留扇區(qū)大小設(shè)定被還原分區(qū)的保留扇區(qū)大小,其中保留扇區(qū)的第一個(gè)扇區(qū)作為啟動(dòng)扇區(qū);
[0030]根據(jù)啟動(dòng)扇區(qū)中根入口的數(shù)據(jù)塊號(hào)計(jì)算根目錄的大小,按照從目標(biāo)分區(qū)起始位置開(kāi)始找空閑數(shù)據(jù)塊的規(guī)則在目標(biāo)分區(qū)中分配相同大小的空間,將目錄項(xiàng)拷貝至目標(biāo)分區(qū)所分配的空間,并對(duì)文件分配表作相應(yīng)的已使用標(biāo)記;
[0031 ] 根據(jù)根目錄大小得到根目錄中目錄項(xiàng)個(gè)數(shù),讀取目錄項(xiàng)的內(nèi)容,根據(jù)目錄項(xiàng)找到目錄項(xiàng)所指示的文件的的起始位置,按數(shù)據(jù)塊大小讀取文件的數(shù)據(jù),再按從目標(biāo)分區(qū)起始位置開(kāi)始找空閑數(shù)據(jù)塊的規(guī)則,將文件數(shù)據(jù)寫入所找到的空閑數(shù)據(jù)塊中,并在文件分配表中作數(shù)據(jù)塊的已使用記錄;
[0032]更新目錄項(xiàng)所指示的文件的起始數(shù)據(jù)塊字段并回寫至該目錄項(xiàng)在目標(biāo)分區(qū)的對(duì)應(yīng)項(xiàng)位置,然后根據(jù)上一個(gè)數(shù)據(jù)塊所指示的位置找到下一個(gè)數(shù)據(jù)塊的位置,繼續(xù)分配空間并在文件分配表中作已使用標(biāo)記和拷貝數(shù)據(jù),直至數(shù)據(jù)塊指示的數(shù)據(jù)塊號(hào)為OxFFFFFFFF。
[0033]本發(fā)明的實(shí)施方式還公開(kāi)了一種文件系統(tǒng)重構(gòu)方法,包括以下步驟:
[0034]利用上文所述的任一種操作系統(tǒng)熱備份方法,對(duì)操作系統(tǒng)進(jìn)行熱備份;
[0035]打開(kāi)備份文件,通過(guò)分析數(shù)據(jù)塊的信息初始化原備份分區(qū)卷信息結(jié)構(gòu);
[0036]將原分區(qū)的啟動(dòng)文件拷貝至目標(biāo)分區(qū)的起始位置,計(jì)算主文件表中前4個(gè)文件記錄的備份的起始位置,按從分區(qū)起始位置找空閑數(shù)據(jù)塊的規(guī)則將主文件表中前4個(gè)文件記錄的備份拷貝至目標(biāo)分區(qū);
[0037]修改目標(biāo)分區(qū)啟動(dòng)文件的第一個(gè)扇區(qū)的內(nèi)容;[0038]讀取主文件表屬性得到主文件表大小,初始化目標(biāo)分區(qū)的卷信息結(jié)構(gòu),更新主文件表的文件記錄,更新主文件表中前4個(gè)文件記錄的備份的文件記錄,更新使用狀態(tài)記錄的文件記錄,更新壞數(shù)據(jù)塊文件的文件記錄,讀取原分區(qū)數(shù)據(jù)塊使用狀態(tài)記錄大小和目標(biāo)分區(qū)數(shù)據(jù)塊使用狀態(tài)記錄大小,移動(dòng)所有主文件表的數(shù)據(jù)到目標(biāo)分區(qū),更新主文件表文件記錄中數(shù)據(jù)塊空間分配的位置記錄信息,根據(jù)數(shù)據(jù)塊空間的分配狀況在分區(qū)使用狀態(tài)記錄中作相應(yīng)標(biāo)記,完成整個(gè)主文件表的還原;
[0039]根據(jù)主文件表的大小計(jì)算文件記錄個(gè)數(shù),根據(jù)文件記錄個(gè)數(shù)拷貝主文件表外的所有文件;
[0040]根據(jù)新生成的分區(qū)使用狀態(tài)記錄信息重寫目標(biāo)分區(qū)的使用狀態(tài)記錄。
[0041]本發(fā)明的實(shí)施方式還公開(kāi)了一種操作系統(tǒng)全量熱備份裝置,包括:
[0042]第一使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;
[0043]第一判斷單元,用于在備份的過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)第一使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已經(jīng)被使用;
[0044]第一寫入單元,用于根據(jù)第一判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù);
[0045]第一備份單元,用于對(duì)使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0046]本發(fā)明的實(shí)施方式還公開(kāi)了一種操作系統(tǒng)增量熱備份裝置,包括:
[0047]第一寫入狀態(tài)記錄單元,用于對(duì)操作系統(tǒng)自上一次備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄;
[0048]第二使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;
[0049]第二判斷單元,用于在備份的過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)第二使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用;
[0050]第二寫入單元,用于根據(jù)第二判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù);
[0051]第二備份單元,用于根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)塊進(jìn)行備份。
[0052]本發(fā)明的實(shí)施方式還公開(kāi)了一種操作系統(tǒng)差量熱備份裝置,包括:
[0053]第二寫入狀態(tài)記錄單元,用于對(duì)操作系統(tǒng)自上一次全量備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄;
[0054]第三使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;[0055]第三判斷單元,用于在備份的過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)第三使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用;
[0056]第三寫入單元,用于根據(jù)第三判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù);
[0057]第三備份單元,用于根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)塊進(jìn)行備份。
[0058]本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于:
[0059]直接對(duì)數(shù)據(jù)塊而不是文件進(jìn)行備份,如果在備份過(guò)程中有覆蓋性寫入操作,則在覆蓋前先將要被覆蓋的數(shù)據(jù)塊保存到臨時(shí)文件中,備份時(shí)如果數(shù)據(jù)塊存在于臨時(shí)文件中,則直接備份臨時(shí)文件中的數(shù)據(jù)塊,這樣備份到的數(shù)據(jù)塊都是開(kāi)始備份那一時(shí)刻的數(shù)據(jù),保證了備份數(shù)據(jù)的完整性和一致性,而且在對(duì)操作系統(tǒng)的備份過(guò)程中該操作系統(tǒng)仍可以正常運(yùn)行。
[0060]基于驅(qū)動(dòng)級(jí)的數(shù)據(jù)塊備份技術(shù),通過(guò)驅(qū)動(dòng)的數(shù)據(jù)轉(zhuǎn)儲(chǔ)技術(shù)來(lái)對(duì)操作系統(tǒng)分區(qū)進(jìn)行保護(hù),使備份時(shí)的數(shù)據(jù)狀態(tài)保持一致性,也不會(huì)出現(xiàn)無(wú)法打開(kāi)文件的現(xiàn)象,已刪掉但沒(méi)有在回收站中清除的文件的數(shù)據(jù)塊也在備份之列,而且備份速度也較文件備份大大提高。
[0061]基于驅(qū)動(dòng)級(jí)的數(shù)據(jù)塊備份技術(shù),增加了對(duì)增量備份和差量備份的完美支持,可以節(jié)省存儲(chǔ)空間,而且備份速度也更快。
[0062]通過(guò)文件系統(tǒng)重構(gòu)技術(shù),可以在操作系統(tǒng)出錯(cuò)后快速恢復(fù)到全量備份或增量備份或差量備份的任一時(shí)間點(diǎn)狀態(tài),從而大大降低操作系統(tǒng)出錯(cuò)后的損失。
[0063]通過(guò)文件系統(tǒng)重構(gòu)技術(shù)技術(shù),可以將操作系統(tǒng)分區(qū)數(shù)據(jù)還原到比備份分區(qū)大的分區(qū),也可以還原到比備份分區(qū)小的分區(qū)。
【專利附圖】
【附圖說(shuō)明】
[0064]圖1是本發(fā)明第一實(shí)施方式中一種操作系統(tǒng)全量熱備份方法的流程示意圖;
[0065]圖2是本發(fā)明第二實(shí)施方式中一種操作系統(tǒng)增量熱備份方法的流程示意圖;
[0066]圖3是本發(fā)明第三實(shí)施方式中一種操作系統(tǒng)差量熱備份方法的流程示意圖;
[0067]圖4是本發(fā)明第四實(shí)施方式中一種文件系統(tǒng)重構(gòu)方法的流程示意圖;
[0068]圖5是本發(fā)明第五實(shí)施方式中一種文件系統(tǒng)重構(gòu)方法的流程示意圖;
[0069]圖6是本發(fā)明第六實(shí)施方式中一種操作系統(tǒng)全量熱備份裝置的結(jié)構(gòu)示意圖;
[0070]圖7是本發(fā)明第七實(shí)施方式中一種操作系統(tǒng)增量熱備份裝置的結(jié)構(gòu)示意圖;
[0071]圖8是本發(fā)明第八實(shí)施方式中一種操作系統(tǒng)差量熱備份裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0072]在以下的敘述中,為了使讀者更好地理解本申請(qǐng)而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒(méi)有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請(qǐng)各權(quán)利要求所要求保護(hù)的技術(shù)方案。[0073]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0074]本發(fā)明第一實(shí)施方式涉及一種操作系統(tǒng)全量熱備份方法。圖1是該操作系統(tǒng)全量熱備份方法的流程示意圖。
[0075]操作系統(tǒng)熱備份,是指操作系統(tǒng)在運(yùn)行的過(guò)程中進(jìn)行備份。
[0076]全量備份,是指?jìng)浞菡麄€(gè)要備份的內(nèi)容。
[0077]具體地說(shuō),如圖1所示,該操作系統(tǒng)全量熱備份方法包括以下步驟:
[0078]在步驟101中,記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄。
[0079]此后進(jìn)入步驟102,判斷有向存儲(chǔ)介質(zhì)的寫入操作。
[0080]若是,則進(jìn)入步驟103 ;若否,則進(jìn)入步驟106。
[0081]在步驟103中,判斷要寫入的數(shù)據(jù)塊是否已被使用。
[0082]若是,則進(jìn)入步驟104 ;若否,則進(jìn)入步驟105。
[0083]在步驟104中,將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件。
[0084]此后進(jìn)入步驟105,向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0085]在備份過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0086]此后進(jìn)入步驟106,對(duì)使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份。
[0087]對(duì)使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0088]此后結(jié)束本流程。
[0089]直接對(duì)數(shù)據(jù)塊而不是文件進(jìn)行備份,如果在備份過(guò)程中有覆蓋性寫入操作,則在覆蓋前先將要被覆蓋的數(shù)據(jù)塊保存到臨時(shí)文件中,備份時(shí)如果數(shù)據(jù)塊存在于臨時(shí)文件中,則直接備份臨時(shí)文件中的數(shù)據(jù)塊,這樣備份到的數(shù)據(jù)塊都是開(kāi)始備份那一時(shí)刻的數(shù)據(jù),保證了備份數(shù)據(jù)的完整性和一致性,而且在對(duì)操作系統(tǒng)的備份過(guò)程中該操作系統(tǒng)仍可以正常運(yùn)行。
[0090]本申請(qǐng)實(shí)現(xiàn)了一種Windows操作系統(tǒng)容災(zāi)解決方案,此方案旨在幫助廣大Windows用戶提高操作系統(tǒng)容災(zāi)能力,保證在Windows操作系統(tǒng)出現(xiàn)問(wèn)題后能夠快速恢復(fù)系統(tǒng)并正常啟動(dòng)運(yùn)行,從而大大降低由于Windows操作系統(tǒng)崩潰而帶來(lái)的損失,主要適用于 Windows (XP/Vista/ffin7/ffindows Server2003/2008)操作系統(tǒng)的熱備份。
[0091]此外,可以理解,該申請(qǐng)中所述的操作系統(tǒng)容災(zāi)解決方案同樣也可以適用于其他的桌面操作系統(tǒng),例如Linux操作系統(tǒng)等等。
[0092]在本申請(qǐng)中,我們以Windows操作系統(tǒng)為例進(jìn)行詳細(xì)闡述。
[0093]現(xiàn)就本實(shí)施方式的詳細(xì)技術(shù)方案做如下介紹:
[0094]首先介紹本發(fā)明的核心驅(qū)動(dòng)之一 hikwtf.sys,這是一個(gè)Upperfilters驅(qū)動(dòng)(即上層過(guò)濾驅(qū)動(dòng)),其核心功能是在備份的過(guò)程中在驅(qū)動(dòng)級(jí)進(jìn)行數(shù)據(jù)轉(zhuǎn)儲(chǔ)并為系統(tǒng)備份軟件提供讀數(shù)據(jù)請(qǐng)求接口。所謂數(shù)據(jù)轉(zhuǎn)儲(chǔ)就是在備份的那一刻記錄下系統(tǒng)分區(qū)簇的使用情況的位圖分布,在此驅(qū)動(dòng)的保護(hù)過(guò)程中只要有對(duì)該系統(tǒng)分區(qū)的寫操作都會(huì)被捕捉到,此時(shí)不是將寫操作的數(shù)據(jù)直接寫到被寫的位置,而是根據(jù)位圖信息來(lái)判斷如何操作:(1)當(dāng)寫操作所在的簇在簇位圖信息中的位置被置為O時(shí),寫操作直接寫到該系統(tǒng)分區(qū)對(duì)應(yīng)的位置;(2)當(dāng)寫操作所在的簇在簇位圖信息中的位置被置為I時(shí),先將該寫操作對(duì)應(yīng)真實(shí)位置的數(shù)據(jù)讀取出來(lái),根據(jù)設(shè)定的數(shù)據(jù)存儲(chǔ)規(guī)則將其存入臨時(shí)文件中,然后將寫操作直接寫到該分區(qū)對(duì)應(yīng)的位置。也就是說(shuō)當(dāng)一個(gè)簇在備份的時(shí)侯已經(jīng)被使用了,有寫操作到來(lái),就將該簇原來(lái)的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到臨時(shí)文件中,然后再進(jìn)行寫操作;當(dāng)一個(gè)簇在備份的時(shí)侯沒(méi)有被使用時(shí),有寫操作到來(lái)直接執(zhí)行即可。驅(qū)動(dòng)為備份軟件提供的讀數(shù)據(jù)請(qǐng)求功能區(qū)別于一般的讀數(shù)據(jù)功能,這個(gè)讀數(shù)據(jù)請(qǐng)求發(fā)生時(shí),驅(qū)動(dòng)會(huì)檢測(cè)讀請(qǐng)求所讀的簇是否在臨時(shí)文件中存在,如果存在直接從臨時(shí)文件中讀取,然后返回,如果不存在,從硬盤中簇所在的位置讀取,然后返回,無(wú)論是那種情況都比普通的讀寫大大提高效率,因?yàn)檫@是在驅(qū)動(dòng)級(jí)直接向底層發(fā)送讀請(qǐng)求,而不需要再經(jīng)過(guò)上層的各級(jí)組件和驅(qū)動(dòng)。
[0095]其次介紹一下本發(fā)明的另一個(gè)核心驅(qū)動(dòng)hikdmr.sys,這也是一個(gè)Upperfilters驅(qū)動(dòng),而且和hikwtf.sys掛載在同一級(jí)上,但屬于比hikwtf.sys更底層的驅(qū)動(dòng),hikwtf.sys捕獲到的讀寫數(shù)據(jù)的I/O請(qǐng)求包都會(huì)發(fā)送到此驅(qū)動(dòng)中,此驅(qū)動(dòng)的功能是為增量備份和差量備份提供數(shù)據(jù)改變記錄,通過(guò)這些記錄可以很快速地進(jìn)行增量備份和差量備份,而不需要通過(guò)預(yù)先的估算來(lái)進(jìn)行增量備份和差量備份,大大的提高了增量備份和差量備份的備份效率。
[0096]增量備份:是指針對(duì)上一次備份后的所有改變的內(nèi)容的備份。
[0097]差量備份:是指基于最近一次全量備份后所有改變的內(nèi)容的備份。
[0098]扇區(qū):磁盤上的每個(gè)磁道被等分為若干個(gè)弧段,這些弧段便是磁盤的扇區(qū)
[0099]簇:相鄰的N個(gè)扇區(qū)組合起來(lái)形成一個(gè)簇,簇的大小為2的X次冪
[0100]本發(fā)明第二實(shí)施方式涉及一種操作系統(tǒng)增量熱備份方法。圖2是該操作系統(tǒng)增量熱備份方法的流程示意圖。
[0101]具體地說(shuō),如圖2所示,該操作系統(tǒng)增量熱備份方法包括以下步驟:
[0102]在步驟201中,對(duì)操作系統(tǒng)自上一次備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄。這里的上一次備份可以是全備份、增量備份或差量備份。在一個(gè)優(yōu)選例中,可以以I表示一個(gè)數(shù)據(jù)塊有寫入,O表示一個(gè)數(shù)據(jù)塊無(wú)寫入。為了形成寫入狀態(tài)記錄,可以從驅(qū)動(dòng)中獲取寫入狀態(tài)記錄后將驅(qū)動(dòng)中的原始寫入記錄清O。當(dāng)然還可以有其它的方式形成寫入記錄,例如,以O(shè)表示一個(gè)數(shù)據(jù)塊有寫入I表示一個(gè)數(shù)據(jù)塊無(wú)寫入,此時(shí)可以從驅(qū)動(dòng)中獲取寫入狀態(tài)記錄后將驅(qū)動(dòng)中的原始寫入記錄全部寫為I。再如,可以以一個(gè)字節(jié)對(duì)應(yīng)一個(gè)數(shù)據(jù)塊是否有寫入,從驅(qū)動(dòng)中獲取寫入狀態(tài)記錄后將驅(qū)動(dòng)中的原始寫入記錄全部寫為表不未寫入的值。
[0103]此后進(jìn)入步驟202,記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄。
[0104]此后進(jìn)入步驟203,判斷是否有向存儲(chǔ)介質(zhì)的寫入操作。
[0105]若是,則進(jìn)入步驟204 ;若否,則進(jìn)入步驟206。
[0106]在步驟204中,判斷要寫入的數(shù)據(jù)塊是否已被使用。
[0107]若是,則進(jìn)入步驟205 ;若否,進(jìn)入步驟206。[0108]在步驟205中,將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件中。
[0109]此后進(jìn)入步驟206,向數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0110]在備份過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0111]此后進(jìn)入步驟207,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份。
[0112]此后結(jié)束本流程。
[0113]根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0114]基于驅(qū)動(dòng)級(jí)的數(shù)據(jù)塊備份技術(shù),通過(guò)驅(qū)動(dòng)的數(shù)據(jù)轉(zhuǎn)儲(chǔ)技術(shù)來(lái)對(duì)操作系統(tǒng)分區(qū)進(jìn)行保護(hù),使備份時(shí)的數(shù)據(jù)狀態(tài)保持一致性,也不會(huì)出現(xiàn)無(wú)法打開(kāi)文件的現(xiàn)象,已刪掉但沒(méi)有在回收站中清除的文件的數(shù)據(jù)塊也在備份之列,而且備份速度也較文件備份大大提高。
[0115]需要說(shuō)明的是,第一實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。
[0116]本發(fā)明第三實(shí)施方式涉及一種操作系統(tǒng)差量熱備份方法。圖3是該操作系統(tǒng)差量熱備份方法的流程示意圖。
[0117]具體地說(shuō),如圖3所示,該操作系統(tǒng)差量熱備份方法主要包括以下步驟:
[0118]在步驟301中,對(duì)操作系統(tǒng)自上一次全量備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄。
[0119]此后進(jìn)入步驟302,記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄;
[0120]此后進(jìn)入步驟303,判斷是否有向存儲(chǔ)介質(zhì)的寫入操作。
[0121]若是,則進(jìn)入步驟304 ;若否,則進(jìn)入步驟306。
[0122]在步驟304中,判斷要寫入的數(shù)據(jù)塊是否已被使用。
[0123]若是,則進(jìn)入步驟305 ;若否,進(jìn)入步驟306。
[0124]在步驟305中,將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件中。
[0125]此后進(jìn)入步驟306,向數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0126]在備份過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0127]此后進(jìn)入步驟307,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份。
[0128]此后結(jié)束本流程。
[0129]根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0130]基于驅(qū)動(dòng)級(jí)的數(shù)據(jù)塊備份技術(shù),增加了對(duì)增量備份和差量備份的完美支持,可以節(jié)省存儲(chǔ)空間,而且備份速度也更快。
[0131]更具體地說(shuō),Windows操作系統(tǒng)的備份流程如下:
[0132]第一步,開(kāi)啟備份程序,程序會(huì)自動(dòng)獲取主機(jī)名、操作系統(tǒng)類型、位數(shù)(32位或64位)、系統(tǒng)分區(qū)總大小、起始扇區(qū)、文件系統(tǒng)類型、已使用空間、未使用空間、硬盤的磁頭數(shù)、文件系統(tǒng)的每個(gè)數(shù)據(jù)塊(簇)大小和數(shù)據(jù)塊個(gè)數(shù)、隱藏扇區(qū)數(shù);獲取所有本地盤符信息作為備份目的地的備選項(xiàng),主要是總空間大小和未使用空間大小,根據(jù)未使用空間大小來(lái)計(jì)算是否可以作為備份的目的地,如果要備份到網(wǎng)絡(luò)需要先映射網(wǎng)絡(luò)驅(qū)動(dòng)器,然后選擇適合的備份目的地;
[0133]第二步,點(diǎn)下一步后會(huì)出現(xiàn)選擇備份方式的頁(yè)面,備份方式有三種,分別為:全量備份、差量備份和增量備份,但這個(gè)頁(yè)面出現(xiàn)的備份方式組合只有三種可能:①全量備份;②全量備份和差量備份;③全量備份和增量備份。只有在最近一次全量備份的過(guò)程中開(kāi)啟了差量備份或增量備份功能才會(huì)在備份方式頁(yè)面中出現(xiàn)差量備份或增量備份功能,且增量備份和差量備份只能出現(xiàn)其中一個(gè),視驅(qū)動(dòng)開(kāi)啟的功能而定,驅(qū)動(dòng)開(kāi)啟增差量備份功能每次只能開(kāi)啟其中之一。針對(duì)備份方式的選擇:
[0134](I)選擇全量備份點(diǎn)下一步進(jìn)入第三步,如果上一次全備開(kāi)啟了增量備份或差量備份功能,則會(huì)彈出一個(gè)選擇對(duì)話框并提示“系統(tǒng)已開(kāi)啟增量備份或差量備份,執(zhí)行全量備份將會(huì)關(guān)閉之前開(kāi)啟的增量備份或差量備份功能,選擇是表示關(guān)閉,選擇否表示不關(guān)閉”,如果選擇否,則仍停留在當(dāng)前頁(yè)面;如果選擇是,則記錄下關(guān)閉標(biāo)記以便真正備份時(shí)能夠關(guān)閉該功能。選擇是之后會(huì)進(jìn)入下一個(gè)頁(yè)面,此頁(yè)面為是否開(kāi)啟增量備份和差量備份的頁(yè)面,選擇開(kāi)啟增量備份或差量備份或什么都不選,點(diǎn)下一步進(jìn)入第四步備份確認(rèn)頁(yè)面,點(diǎn)擊開(kāi)始,系統(tǒng)提示是否開(kāi)始備份,選擇是進(jìn)入第五步,開(kāi)始備份數(shù)據(jù),在開(kāi)始備份數(shù)據(jù)之前需要寫入文件頭、擴(kuò)展頭和硬盤的前63或2048個(gè)扇區(qū)的備份,其中文件頭的信息為文件頭本身大小、硬盤信息、備份的系統(tǒng)分區(qū)信息和備份類型等,這些信息寫完之后開(kāi)始備份系統(tǒng)分區(qū)真實(shí)數(shù)據(jù),備份的數(shù)據(jù)根據(jù)簇的使用情況的位圖信息來(lái)計(jì)算,簇在位圖中的位置被置為I的將被備份,置為0的不被備份,在每一個(gè)數(shù)據(jù)包之前會(huì)有一個(gè)數(shù)據(jù)包頭,包頭記錄數(shù)據(jù)包的起始位置信息和校驗(yàn)信息,寫入包頭后再寫入包頭所指示的數(shù)據(jù),這些數(shù)據(jù)都是通過(guò)向驅(qū)動(dòng)hikwtf.sys發(fā)送請(qǐng)求所讀取到的,此驅(qū)動(dòng)的數(shù)據(jù)轉(zhuǎn)儲(chǔ)和數(shù)據(jù)讀取功能上面已經(jīng)介紹,不再贅述。之后的所有數(shù)據(jù)的讀取寫入均以此類推直至備份完所有數(shù)據(jù),之后寫入數(shù)據(jù)包位置的索引(指示那個(gè)數(shù)據(jù)包在那個(gè)文件中那個(gè)位置以方便快速查找),然后根據(jù)實(shí)際備份文件的個(gè)數(shù)更新文件開(kāi)始位置的文件頭信息并將文件頭寫入文件結(jié)尾位置,完成備份。
[0135](2)同理,增量備份和差量份原理與全量備份原理一樣且都是系統(tǒng)運(yùn)行狀態(tài)下進(jìn)行備份(熱備份),不同的是備份過(guò)程使用的位圖信息以及增量備份和差量備份不需要開(kāi)啟任何額外的功能,增量備份和差量備份的位圖信息首先從驅(qū)動(dòng)hikdmr.sys獲取初始數(shù)據(jù),增量備份需要在獲取到初始數(shù)據(jù)后將驅(qū)動(dòng)中的初始數(shù)據(jù)清0,然后將這些初始數(shù)據(jù)與系統(tǒng)分區(qū)的位圖信息相與,相與之后得到的位置信息才是真是要備份的簇的位圖信息,根據(jù)此位圖信息來(lái)完成增量備份或差量備份。
[0136]需要說(shuō)明的是,第一和第二實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一和第二實(shí)施方式互相配合實(shí)施。第一和第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一和第二實(shí)施方式中。
[0137]本發(fā)明第四實(shí)施方式涉及一種文件系統(tǒng)重構(gòu)方法。圖4是該文件系統(tǒng)重構(gòu)方法的流程示意圖。
[0138]具體地說(shuō),如圖4所示,該文件系統(tǒng)重構(gòu)方法包括以下步驟:
[0139]在步驟401中,利用上文所述的任一種操作系統(tǒng)熱備份方法,對(duì)操作系統(tǒng)進(jìn)行熱備份。
[0140]此后進(jìn)入步驟402,根據(jù)原分區(qū)的保留扇區(qū)大小設(shè)定被還原分區(qū)的保留扇區(qū)大小,其中保留扇區(qū)的第一個(gè)扇區(qū)作為啟動(dòng)扇區(qū)。
[0141]此后進(jìn)入步驟403,根據(jù)啟動(dòng)扇區(qū)中根入口的數(shù)據(jù)塊號(hào)計(jì)算根目錄的大小,按照從目標(biāo)分區(qū)起始位置開(kāi)始找空閑數(shù)據(jù)塊的規(guī)則在目標(biāo)分區(qū)中分配相同大小的空間,將目錄項(xiàng)拷貝至目標(biāo)分區(qū)所分配的空間,并對(duì)文件分配表(File Allocation Table,簡(jiǎn)稱“FAT”)作相應(yīng)的已使用標(biāo)記。
[0142]此后進(jìn)入步驟404,根據(jù)根目錄大小得到根目錄中目錄項(xiàng)個(gè)數(shù),讀取目錄項(xiàng)的內(nèi)容,根據(jù)目錄項(xiàng)找到目錄項(xiàng)所指示的文件的的起始位置,按數(shù)據(jù)塊大小讀取文件的數(shù)據(jù),再按從目標(biāo)分區(qū)起始位置開(kāi)始找空閑數(shù)據(jù)塊的規(guī)則,將文件數(shù)據(jù)寫入所找到的空閑數(shù)據(jù)塊中,并在FAT表中作數(shù)據(jù)塊的已使用記錄。
[0143]此后進(jìn)入步驟405,更新目錄項(xiàng)所指示的文件的起始數(shù)據(jù)塊字段并回寫至該目錄項(xiàng)在目標(biāo)分區(qū)的對(duì)應(yīng)項(xiàng)位置,然后根據(jù)上一個(gè)數(shù)據(jù)塊所指示的位置找到下一個(gè)數(shù)據(jù)塊的位置,繼續(xù)分配空間并在FAT表中作已使用標(biāo)記和拷貝數(shù)據(jù),直至數(shù)據(jù)塊指示的數(shù)據(jù)塊號(hào)為OxFFFFFFFF。
[0144]此后結(jié)束本流程。
[0145]通過(guò)文件系統(tǒng)重構(gòu)技術(shù),可以在操作系統(tǒng)出錯(cuò)后快速恢復(fù),使恢復(fù)后的操作系統(tǒng)正常啟動(dòng)運(yùn)行,實(shí)現(xiàn)操作系統(tǒng)的快速容災(zāi)。
[0146]該文件系統(tǒng)重構(gòu)方法適用于FAT32文件系統(tǒng),從根目錄開(kāi)始循環(huán)重構(gòu)目錄和目錄中的文件和子目錄,直至所有子目錄和文件全部重構(gòu)完成,完成整個(gè)FAT32文件系統(tǒng)的重構(gòu)。
[0147]需要說(shuō)明的是,第一、第二和第三實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一、第二和第三實(shí)施方式互相配合實(shí)施。第一、第二和第三實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一、第二和第三實(shí)施方式中。
[0148]本發(fā)明第五實(shí)施方式涉及一種文件系統(tǒng)重構(gòu)方法。圖5是該文件系統(tǒng)重構(gòu)方法的流程示意圖。
[0149]具體地說(shuō),如圖5所示,該文件系統(tǒng)重構(gòu)方法包括以下步驟:
[0150]在步驟501中,利用上文所述的任一種操作系統(tǒng)熱備份方法,對(duì)操作系統(tǒng)進(jìn)行熱備份。
[0151]此后進(jìn)入步驟502,打開(kāi)備份文件,通過(guò)分析數(shù)據(jù)塊的信息初始化原備份分區(qū)卷信
息結(jié)構(gòu)。
[0152]此后進(jìn)入步驟503,將原分區(qū)的啟動(dòng)文件拷貝至目標(biāo)分區(qū)的起始位置,計(jì)算主文件表中前4個(gè)文件記錄的備份的起始位置,按從分區(qū)起始位置找空閑數(shù)據(jù)塊的規(guī)則將主文件表中前4個(gè)文件記錄的備份拷貝至目標(biāo)分區(qū)。
[0153]此后進(jìn)入步驟504,修改目標(biāo)分區(qū)啟動(dòng)文件的第一個(gè)扇區(qū)的內(nèi)容。
[0154]此后進(jìn)入步驟505,讀取主文件表屬性得到主文件表大小,初始化目標(biāo)分區(qū)的卷信息結(jié)構(gòu),更新主文件表的文件記錄,更新主文件表中前4個(gè)文件記錄的備份的文件記錄,更新使用狀態(tài)記錄的文件記錄,更新壞數(shù)據(jù)塊文件的文件記錄,讀取原分區(qū)數(shù)據(jù)塊使用狀態(tài)記錄大小和目標(biāo)分區(qū)數(shù)據(jù)塊使用狀態(tài)記錄大小,移動(dòng)所有主文件表的數(shù)據(jù)到目標(biāo)分區(qū),更新主文件表文件記錄中數(shù)據(jù)塊空間分配的位置記錄信息,根據(jù)數(shù)據(jù)塊空間的分配狀況在分區(qū)使用狀態(tài)記錄中作相應(yīng)標(biāo)記,完成整個(gè)主文件表的還原。
[0155]此后進(jìn)入步驟506,根據(jù)主文件表的大小計(jì)算文件記錄個(gè)數(shù),根據(jù)文件記錄個(gè)數(shù)拷貝主文件表外的所有文件。
[0156]此后進(jìn)入步驟507,根據(jù)新生成的分區(qū)使用狀態(tài)記錄信息重寫目標(biāo)分區(qū)的使用狀態(tài)記錄。
[0157]此后結(jié)束本流程。
[0158]該操作系統(tǒng)重構(gòu)方法適用于NTFS文件系統(tǒng)。
[0159]綜合上述第四和第五實(shí)施方式,更具體地說(shuō),Windows操作系統(tǒng)的還原流程如下:
[0160]第一步,從WinPE啟動(dòng)還原程序,獲取系統(tǒng)識(shí)別的所有硬盤和分區(qū)的信息,硬盤包括硬盤號(hào)、硬盤大小、硬盤的頭道扇區(qū)數(shù),分區(qū)的信息包括分區(qū)起始位置、分區(qū)大小、分區(qū)文件系統(tǒng)類型、文件系統(tǒng)的塊大小以及塊的個(gè)數(shù)、分區(qū)之前的隱藏扇區(qū),點(diǎn)下一步進(jìn)入第二步,選擇要還原的系統(tǒng)的全量備份文件(如果要從網(wǎng)絡(luò)上還原,需要先映射網(wǎng)絡(luò)驅(qū)動(dòng)器,找到還原文件),點(diǎn)下一步進(jìn)入第三步,還原程序會(huì)自動(dòng)搜索全量備份文件所在目錄,如果存在增量備份文件或差量備份文件則會(huì)彈出選擇增量備份文件或差量備份文件的對(duì)話框,選擇增量備份文件或差量備份文件后點(diǎn)下一步進(jìn)入第四步,程序自動(dòng)校驗(yàn)還原文件結(jié)構(gòu)是否正確,不選擇增量備份文件或差量備份文件的話可以選擇取消直接進(jìn)入全量備份文件結(jié)構(gòu)完整性校驗(yàn);如果不存在增量備份文件或差量備份文件,則會(huì)自動(dòng)進(jìn)入全量備份文件結(jié)構(gòu)完整性校驗(yàn)。在備份文件校驗(yàn)頁(yè)面可以勾選詳細(xì)還原模式或不勾選詳細(xì)還原模式,如果不勾選詳細(xì)還原模式,則屬于簡(jiǎn)單模式還原,只能進(jìn)入已存在的分區(qū)選擇頁(yè)面,此頁(yè)面只能選擇已存在的分區(qū),不能改變分區(qū)大小,也不能選擇未分配的空間;如果勾選詳細(xì)還原模式,則會(huì)進(jìn)入詳細(xì)模式還原目的地選擇頁(yè)面,此頁(yè)面首先選擇硬盤號(hào)指示還原到哪個(gè)硬盤,此時(shí)會(huì)列出這個(gè)硬盤的分區(qū)空間分布,您可以選擇任何列出的空間進(jìn)行還原,只要空間足夠(空間必須滿足不小于備份文件中系統(tǒng)分區(qū)的已使用空間大小),也可以將已存在的分區(qū)擴(kuò)大(擴(kuò)大的前提是此分區(qū)前面或后面有未使用空間)或縮小并選擇之進(jìn)行還原。無(wú)論是進(jìn)入簡(jiǎn)單模式還是詳細(xì)模式,還原都不受硬盤限制,也就是說(shuō)只要空間足夠,可以還原到任何硬盤。如果被還原的分區(qū)和原來(lái)備份的系統(tǒng)分區(qū)大小完全一樣,則將備份文件中的數(shù)據(jù)包讀出并根據(jù)數(shù)據(jù)包所指示的相對(duì)位置寫入分區(qū)即可完成數(shù)據(jù)的還原,讓系統(tǒng)數(shù)據(jù)還原后能啟動(dòng)的技術(shù)將在后面介紹;如果被還原的分區(qū)和備份的系統(tǒng)分區(qū)大小不一樣,且滿足還原條件(空間必須滿足不小于備份文件中系統(tǒng)分區(qū)的已使用空間大小),則要進(jìn)行擴(kuò)大或縮小還原,這兩種還原都需要用到重構(gòu)文件系統(tǒng)技術(shù)。
[0161]重構(gòu)文件系統(tǒng):即將文件系統(tǒng)內(nèi)的文件按照文件系統(tǒng)的結(jié)構(gòu)定義重新進(jìn)行文件的空間分配,并更新文件系統(tǒng)結(jié)構(gòu)文件MFT中的對(duì)應(yīng)于每個(gè)文件的數(shù)據(jù),使所有文件從分區(qū)起始位置依次向后分配空間,從而既實(shí)現(xiàn)了文件系統(tǒng)擴(kuò)大和縮小還原又減少文件系統(tǒng)分區(qū)碎片的一種技術(shù)。
[0162]簡(jiǎn)單模式:應(yīng)用于還原時(shí)所選擇的一種還原模式,此模式只能還原到已存在的分區(qū)。
[0163]詳細(xì)模式:應(yīng)用于還原時(shí)所選擇的一種還原模式,此模式可以還原到硬盤上的任何一塊空間,包括已使用的和未使用的空間。
[0164]下面詳細(xì)介紹文件系統(tǒng)重構(gòu)技術(shù),本申請(qǐng)支持FAT32文件系統(tǒng)和NTFS文件系統(tǒng):
[0165](I) FAT32文件系統(tǒng)重構(gòu)技術(shù):
[0166]此技術(shù)從根目錄開(kāi)始循環(huán)重構(gòu)目錄和目錄中的文件和子目錄,直至所有子目錄和文件全部重構(gòu)完成,完成整個(gè)FAT32文件系統(tǒng)的重構(gòu)。下面開(kāi)始詳細(xì)介紹:
[0167]首先根據(jù)原分區(qū)的保留扇區(qū)大小設(shè)定被還原分區(qū)的保留扇區(qū)大小(通常為32),保留扇區(qū)的第一個(gè)扇區(qū)為啟動(dòng)扇區(qū)需要特殊處理,部分內(nèi)容需要根據(jù)后面重構(gòu)時(shí)計(jì)算的數(shù)值進(jìn)行填充,如總扇區(qū)數(shù)需要根據(jù)新分區(qū)大小進(jìn)行修改,根目錄入口要根據(jù)實(shí)際的根起始位置填寫,每道扇區(qū)數(shù)和磁頭數(shù)根據(jù)從整個(gè)硬盤獲取的參數(shù)來(lái)填寫,F(xiàn)AT (文件分配表)扇區(qū)數(shù)的大小根據(jù)分區(qū)總大小來(lái)計(jì)算,F(xiàn)AT扇區(qū)數(shù)=(((扇區(qū)總數(shù)-保留扇區(qū)數(shù)-FAT扇區(qū)數(shù)*2)/每簇扇區(qū)數(shù))*2+4)/512,每簇的扇區(qū)數(shù)的計(jì)算方式為:1)大于128G簇大小為64K ;2)小于128G且大于32G的簇大小為32K ;3)小于32G且大于16G的簇大小為16K ;4)大于16G且小于8G的簇大小為8K ;5)小于8G的簇大小為4K。計(jì)算完這些參數(shù)之后,將其填充至啟動(dòng)扇區(qū)的對(duì)應(yīng)位置,接著開(kāi)始拷貝文件,根據(jù)原分區(qū)啟動(dòng)扇區(qū)中根入口的簇號(hào)計(jì)算根目錄的大小,按照從目標(biāo)分區(qū)起始位置開(kāi)始找空閑簇的規(guī)則在目標(biāo)分區(qū)中分配相同大小的空間,將目錄項(xiàng)拷貝至目標(biāo)分區(qū)所分配的空間,并對(duì)FAT表作相應(yīng)的已使用標(biāo)記,由根目錄大小得到根目錄中目錄項(xiàng)個(gè)數(shù),循環(huán)讀取目錄項(xiàng)的內(nèi)容,根據(jù)目錄項(xiàng)找到目錄項(xiàng)所指示的文件的起始位置,按簇大小讀取文件的數(shù)據(jù),再按照從目標(biāo)分區(qū)起始位置開(kāi)始找空閑簇的規(guī)則,將文件數(shù)據(jù)寫入找到的空閑簇中并在FAT表中作簇的已使用記錄,更新目錄項(xiàng)所指示的該文件的起始簇字段并回寫至(覆蓋)該目錄項(xiàng)在目標(biāo)分區(qū)的對(duì)應(yīng)項(xiàng)位置,然后根據(jù)上一個(gè)簇所指示的位置找到下一個(gè)簇的位置,繼續(xù)分配空間并在FAT表中作已使用標(biāo)記和拷貝數(shù)據(jù),以此類推直至簇指示的簇號(hào)為OxFFFFFFFF指示文件數(shù)據(jù)拷貝結(jié)束為止,其他文件的重構(gòu)與此原理相同,直至所有目錄項(xiàng)循環(huán)完畢,目錄重構(gòu)完成,同時(shí)目錄下的文件也重構(gòu)完成;如果目錄項(xiàng)中指示的不是文件而是目錄則與根目錄的重構(gòu)原理相同,按根目錄重構(gòu)原理類推即可,至此FAT32文件系統(tǒng)重構(gòu)完成。
[0168](2) NTFS文件系統(tǒng)重構(gòu)技術(shù):
[0169]NTFS文件系統(tǒng)的所有信息都是以文件的形式存在的,它有一個(gè)很重要的文件MFT(主文件表),這個(gè)文件會(huì)記錄NTFS文件系統(tǒng)中所有文件的各種屬性和數(shù)據(jù)(數(shù)據(jù)太大會(huì)記錄數(shù)據(jù)的位置),針對(duì)每一個(gè)文件的記錄我們稱之為文件記錄(File Record),依據(jù)這些特性具體介紹一下NTFS文件系統(tǒng)的重構(gòu)技術(shù)。打開(kāi)備份文件,通過(guò)分析數(shù)據(jù)塊的信息初始化原備份分區(qū)卷信息結(jié)構(gòu),如文件的各種屬性值、扇區(qū)大小、簇大小、每個(gè)文件記錄的字節(jié)數(shù)、每索引記錄的字節(jié)數(shù)、MFT的起始位置,讀取MFT自身的文件記錄,檢驗(yàn)文件記錄的完整性,分析此文件記錄初始化MFT自身的節(jié)點(diǎn)結(jié)構(gòu)以備后面分析其他文件使用,根據(jù)原分區(qū)總大小計(jì)算分區(qū)位圖信息大小和分區(qū)位圖信息的簇?cái)?shù),分析MFT文件屬性得到MFT位圖屬性的大小并為之分配內(nèi)存,讀取MFT的位圖屬性值;將原分區(qū)的啟動(dòng)文件$Boot拷貝至目標(biāo)分區(qū)的起始位置,計(jì)算MFTMirr (MFT中前4個(gè)文件記錄的備份)的起始位置,按從分區(qū)起始位置找空閑簇的規(guī)則將MFTMirr拷貝到目標(biāo)分區(qū);接著修改目標(biāo)分區(qū)啟動(dòng)文件$Boot的第一個(gè)扇區(qū)(也是分區(qū)的第一個(gè)扇區(qū)或分區(qū)的啟動(dòng)扇區(qū))的內(nèi)容,包括MFT的起始簇號(hào)、MFTMirr的起始簇號(hào)、分區(qū)總大??;讀取MFT屬性得到MFT大小,初始化目標(biāo)分區(qū)的卷信息結(jié)構(gòu)(原理同原分區(qū)相同),更新文件MFT的文件記錄,重新初始化目標(biāo)分區(qū)的卷信息結(jié)構(gòu)以保證該結(jié)構(gòu)信息的正確且處于最新?tīng)顟B(tài),更新MFTMirr的文件記錄,更新位圖信息的文件記錄,更新壞簇文件的文件記錄,讀取原分區(qū)的簇使用情況位圖信息大小和目標(biāo)分區(qū)簇使用情況的位圖信息大小,移動(dòng)所有MFT的數(shù)據(jù)到目標(biāo)分區(qū),且空間分配按從分區(qū)起始位置找空閑簇的規(guī)則來(lái)分配,直至數(shù)據(jù)拷貝完成,更新MFT文件記錄中簇空間分配的位置記錄信息,其他屬性不變,根據(jù)簇空間的分配狀況在分區(qū)位圖信息中作相應(yīng)標(biāo)記,完成整個(gè)MFT的還原(之后所有文件的還原都會(huì)根據(jù)此文件的內(nèi)容來(lái)還原,因?yàn)樗形募奈募L錄都在MFT中);根據(jù)MFT的大小計(jì)算文件記錄個(gè)數(shù),根據(jù)文件記錄個(gè)數(shù)和MFT文件的拷貝原理來(lái)循環(huán)拷貝其他所有文件,完成所有文件的拷貝之后根據(jù)新生成的分區(qū)位圖信息重寫目標(biāo)分區(qū)的位圖信息,至此完成整個(gè)分區(qū)的還原。
[0170]通過(guò)文件系統(tǒng)重構(gòu)技術(shù)技術(shù),可以將操作系統(tǒng)分區(qū)數(shù)據(jù)還原到比備份分區(qū)大的分區(qū),也可以還原到比備份分區(qū)小的分區(qū)。
[0171]通過(guò)文件統(tǒng)重構(gòu)技術(shù)完成分區(qū)數(shù)據(jù)還原之后,需要修改注冊(cè)表文件的信息和相關(guān)系統(tǒng)文件信息,此時(shí)系統(tǒng)并沒(méi)有啟動(dòng),所以系統(tǒng)API中注冊(cè)表相關(guān)的API肯定是無(wú)法修改被還原的分區(qū)中注冊(cè)表的信息的,這個(gè)時(shí)侯就需要用到注冊(cè)表二進(jìn)制解析技術(shù)了,下面介紹注冊(cè)表二進(jìn)制解析技術(shù):
[0172]1、注冊(cè)表相關(guān)術(shù)語(yǔ)介紹:
[0173]注冊(cè)表結(jié)構(gòu),注冊(cè)表文件一般存放在\系統(tǒng)文件夾\SYSTEM32\C0NFIG目錄下的6個(gè)文件 DEFAULT、SAM、SECURITY、SOFTWARE、USERDIFF 和 SYSTEM 中,其中每一個(gè)注冊(cè)表文件叫一個(gè)儲(chǔ)巢(HIVE)。
[0174]一個(gè)儲(chǔ)巢文件由多個(gè)巢箱(BIN)組成,HIVE文件的首部有一個(gè)文件頭(基本塊、base block),用于描述這個(gè)HIVE文件的一些全局信息;
[0175]—個(gè)BIN由多個(gè)巢室(CELL)組成,CELL可以分為具體的5種(后面介紹),用于存儲(chǔ)不同的注冊(cè)表數(shù)據(jù),一個(gè)巢室可以容納一個(gè)鍵、一個(gè)值、一個(gè)安全描述符、一列子鍵或者一列鍵值,分別有對(duì)應(yīng)的巢室來(lái)存儲(chǔ)數(shù)據(jù);
[0176]鍵巢室,包含了一個(gè)注冊(cè)表鍵(也稱為鍵節(jié)點(diǎn))的巢室,一個(gè)鍵巢室包含一個(gè)特征簽名(對(duì)于一個(gè)鍵是kn,一個(gè)符號(hào)鏈接是kl)、該鍵最近一次更新的時(shí)間戳、該鍵父鍵巢室的巢室索引、代表該鍵的子鍵的子鍵列表巢室的索引、該鍵的安全描述符巢室索引、一個(gè)代表該鍵類名的字符串鍵巢室索引,以及該鍵的名稱;
[0177]值巢室,一個(gè)巢室,包含了關(guān)于一個(gè)鍵的值的信息,該巢室包含一個(gè)簽名kv,該值的類型,如REG_DW0RD或REG_BINARY,以及該值的名稱。一個(gè)值巢室也包含了另一個(gè)值巢室的索引,后者包含了對(duì)前者的數(shù)據(jù);
[0178]子鍵列表巢室,有一系列的鍵巢室的巢室索引構(gòu)成的巢室,這些鍵巢室是同一個(gè)父鍵下面的所有子鍵;[0179]值列表巢室,有一系列的值巢室的巢室索引構(gòu)成的巢室,這些值巢室是同一個(gè)父鍵下面的所有值;
[0180]安全描述符巢室,包含了一個(gè)安全描述符巢室,其首部的特征簽名為ks,以及一個(gè)引用計(jì)數(shù),該引用計(jì)數(shù)值記錄了所有共享安全描述符的鍵節(jié)點(diǎn)數(shù)目,多個(gè)鍵巢室可以共享同樣的安全描述符巢室。
[0181]儲(chǔ)巢的結(jié)構(gòu)是通過(guò)一些鏈接建立起來(lái)的,這些鏈接稱為巢室索引(cell index)。每個(gè)巢室索引是一個(gè)巢室在儲(chǔ)巢文件中的偏移。因此,巢室索引就像是一個(gè)指針,從一個(gè)巢室指向另一個(gè)巢室,配置管理器將巢室索引解釋為相對(duì)于儲(chǔ)巢起始處的偏移。
[0182]2、了解了注冊(cè)表相關(guān)術(shù)語(yǔ)后,下面開(kāi)始介紹如何用注冊(cè)表二進(jìn)制解析技術(shù)實(shí)現(xiàn)對(duì)注冊(cè)表的增刪查改:
[0183]a)讀取鍵值:首先讀取注冊(cè)表文件的所有數(shù)據(jù),通過(guò)這些數(shù)據(jù)初始化儲(chǔ)巢結(jié)構(gòu)信息并保存整個(gè)注冊(cè)表文件數(shù)據(jù)緩存區(qū)的首地址以備解析時(shí)使用,比如我想查詢根鍵下A\B\C下的D的值,那么首先通過(guò)儲(chǔ)巢結(jié)構(gòu)找到根鍵的位置偏移,利用根鍵巢室中的子鍵列表巢室索引,找到包含A的所有子鍵列表的那個(gè)巢室,然后再利用該子鍵列表巢室中的巢室索引列表找到A的每個(gè)子鍵的巢室,最終找到A,同理找到B和C,再通過(guò)C鍵的結(jié)構(gòu)找到C的值列表巢室,然后根據(jù)D的值遍歷C的值列表巢室,找到D的值巢室索引,然后通過(guò)該索引找到D的的巢室,讀取出D的值,
[0184]b)同理,修改該值的話需要找到D的值巢室,然后將它的值用要修改的值替換,然后重新寫回文件即可;
[0185]c)增加鍵值:同樣先遍歷找到要增加鍵值的路徑,然后找到其所在巢箱的起始的位置,根據(jù)這個(gè)起始位置查找空閑塊,如果沒(méi)有找到空閑塊,則從整個(gè)注冊(cè)表的每個(gè)巢箱開(kāi)始查找空閑塊,找到后標(biāo)為已使用空間,如果在路徑所在的巢箱中找到空閑塊也同樣標(biāo)為已使用空間供存儲(chǔ)鍵值使用,然后根據(jù)找到的空間填充相應(yīng)的結(jié)構(gòu)信息,包括數(shù)字簽明、名稱長(zhǎng)度、數(shù)據(jù)長(zhǎng)度、類型、數(shù)據(jù)相對(duì)巢室起始位置的偏移量、標(biāo)記值、名稱,最后將填充的結(jié)構(gòu)信息寫入分配的巢室空間中,完成鍵值的增加;
[0186]d)刪除鍵值:同理,從儲(chǔ)巢開(kāi)始位置遍歷找到要?jiǎng)h除的鍵值的路徑的起始位置,根據(jù)這個(gè)起始位置找到鍵巢室的巢室索引,遍歷巢室索引,將每個(gè)巢室索引的鍵名稱與要?jiǎng)h除的鍵名稱比較,直至找到要?jiǎng)h除的鍵的巢室索引,由這個(gè)索引找到巢室的位置,釋放巢室的空間并將其添加到所在巢箱的未使用空間中,更新已使用巢室個(gè)數(shù),并將更新后的數(shù)據(jù)回寫至注冊(cè)表文件中完成鍵值的刪除。至此注冊(cè)表二進(jìn)制解析技術(shù)介紹完畢。
[0187]接著上面完成系統(tǒng)分區(qū)數(shù)據(jù)還原后,接著修改與系統(tǒng)啟動(dòng)相關(guān)的數(shù)據(jù)項(xiàng),首先修改注冊(cè)表中 HKEY_LOCAL_MACHINE\SYSTEM\
[0188]MountedDevices下的某一項(xiàng)的值,這個(gè)項(xiàng)通過(guò)原系統(tǒng)分區(qū)的DISKID和起始偏移確定,用前面介紹的注冊(cè)表二進(jìn)制解析技術(shù)修改為新還原的分區(qū)的DISKID和新的起始偏移,接著修改新還原分區(qū)起始扇區(qū)中的隱藏扇區(qū)數(shù)和磁頭數(shù),然后針對(duì)XP/SerVer2003需要修改根目錄下Boot, ini的啟動(dòng)選項(xiàng)的值,被還原的分區(qū)在第幾個(gè)分區(qū)就修改成該值,針對(duì)Vista/Win7/Server2008需要修改注冊(cè)表文件Boot/bed中的Objects下所有有與系統(tǒng)分區(qū)相關(guān)的鍵和子鍵的值,這些值同樣是將原分區(qū)的DISKID和分區(qū)起始位置偏移修改為新分區(qū)的DISKID和新分區(qū)的起始位置偏移,所用技術(shù)同樣是前面介紹的注冊(cè)表二進(jìn)制解析技術(shù)。最后根據(jù)新分區(qū)的還原位置以及大小修改整個(gè)硬盤起始扇區(qū)中的分區(qū)表項(xiàng)使新還原的分區(qū)與其位置相對(duì)應(yīng),到此完成整個(gè)操作系統(tǒng)的還原,重啟WinPE,從被還原的硬盤啟動(dòng),即可進(jìn)入新還原的系統(tǒng)。
[0189]需要說(shuō)明的是,第一、第二、第三和第四實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一、第二、第三和第四實(shí)施方式互相配合實(shí)施。第一、第二、第三和第四實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一、第二、第三和第四實(shí)施方式中。
[0190]本發(fā)明的各方法實(shí)施方式均可以以軟件、硬件、固件等方式實(shí)現(xiàn)。不管本發(fā)明是以軟件、硬件、還是固件方式實(shí)現(xiàn),指令代碼都可以存儲(chǔ)在任何類型的計(jì)算機(jī)可訪問(wèn)的存儲(chǔ)器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的或者可更換的介質(zhì)等等)。同樣,存儲(chǔ)器可以例如是可編程陣列邏輯(Programmable ArrayLogic,簡(jiǎn)稱“PAL”)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,簡(jiǎn)稱“RAM”)、可編程只讀存儲(chǔ)器(Programmable Read Only Memory,簡(jiǎn)稱“PROM”)、只讀存儲(chǔ)器(Read-Only Memory,簡(jiǎn)稱“ROM”)、電可擦除可編程只讀存儲(chǔ)器(Electrically Erasable Programmable ROM,簡(jiǎn)稱“EEPROM”)、磁盤、光盤、數(shù)字通用光盤(Digital Versatile Disc,簡(jiǎn)稱“DVD”)等等。
[0191]本發(fā)明第六實(shí)施方式涉及一種操作系統(tǒng)全量熱備份裝置。圖6是該操作系統(tǒng)全量熱備份裝置的結(jié)構(gòu)示意圖。
[0192]具體地說(shuō),如圖6所示,該操作系統(tǒng)全量熱備份裝置包括:
[0193]第一使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄。
[0194]第一判斷單元,用于在備份的過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)第一使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已經(jīng)被使用。
[0195]第一寫入單元,用于根據(jù)第一判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0196]第一備份單元,用于對(duì)使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
[0197]第一實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。
[0198]本發(fā)明第七實(shí)施方式涉及一種操作系統(tǒng)增量熱備份裝置。圖7是該操作系統(tǒng)增量熱備份裝置的結(jié)構(gòu)示意圖。
[0199]具體地說(shuō),如圖7所示,該操作系統(tǒng)增量熱備份裝置包括:
[0200]第一寫入狀態(tài)記錄單元,用于對(duì)操作系統(tǒng)自上一次備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄。在一個(gè)優(yōu)選例中,可以以I表示一個(gè)數(shù)據(jù)塊有寫入,O表示一個(gè)數(shù)據(jù)塊無(wú)寫入。為了形成寫入狀態(tài)記錄,可以從驅(qū)動(dòng)中獲取寫入狀態(tài)記錄后將驅(qū)動(dòng)中的原始寫入記錄清O。
[0201]第二使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄。
[0202]第二判斷單元,用于在備份的過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)第二使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用。
[0203]第二寫入單元,用于根據(jù)第二判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0204]第二備份單元,用于根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)塊進(jìn)行備份。
[0205]第二實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第二實(shí)施方式互相配合實(shí)施。第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第二實(shí)施方式中。
[0206]本發(fā)明第八實(shí)施方式涉及一種操作系統(tǒng)差量熱備份裝置。圖8是該操作系統(tǒng)差量熱備份裝置的結(jié)構(gòu)示意圖。
[0207]具體地說(shuō),如圖8所示,該操作系統(tǒng)差量熱備份裝置包括:
[0208]第二寫入狀態(tài)記錄單元,用于對(duì)操作系統(tǒng)自上一次全量備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄。
[0209]第三使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄。
[0210]第三判斷單元,用于在備份的過(guò)程中,如果有向存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)第三使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用。
[0211]第三寫入單元,用于根據(jù)第三判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù)。
[0212]第三備份單元,用于根據(jù)寫入狀態(tài)記錄和使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到臨時(shí)文件中,則從臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)塊進(jìn)行備份。
[0213]第三實(shí)施方式是與本實(shí)施方式相對(duì)應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第三實(shí)施方式互相配合實(shí)施。第三實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第三實(shí)施方式中。
[0214]需要說(shuō)明的是,本發(fā)明各裝置實(shí)施方式中提到的各單元都是邏輯單元,在物理上,一個(gè)邏輯單元可以是一個(gè)物理單元,也可以是一個(gè)物理單元的一部分,還可以以多個(gè)物理單元的組合實(shí)現(xiàn),這些邏輯單元本身的物理實(shí)現(xiàn)方式并不是最重要的,這些邏輯單元所實(shí)現(xiàn)的功能的組合才是解決本發(fā)明所提出的技術(shù)問(wèn)題的關(guān)鍵。此外,為了突出本發(fā)明的創(chuàng)新部分,本發(fā)明上述各裝置實(shí)施方式并沒(méi)有將與解決本發(fā)明所提出的技術(shù)問(wèn)題關(guān)系不太密切的單元引入,這并不表明上述設(shè)備實(shí)施方式并不存在其它的單元。
[0215]需要說(shuō)明的是,在本專利的權(quán)利要求和說(shuō)明書中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0216]雖然通過(guò)參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對(duì)本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對(duì)其作各種改變,而不偏離本發(fā)明的精神和范圍。
【權(quán)利要求】
1.一種操作系統(tǒng)全量熱備份方法,其特征在于,包括以下步驟: 記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄; 在備份過(guò)程中,如果有向所述存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)所述使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù); 對(duì)所述使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到所述臨時(shí)文件中,則從所述臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從所述存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
2.一種操作系統(tǒng)增量熱備份方法,其特征在于,包括以下步驟: 對(duì)操作系統(tǒng)自上一次備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄; 記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄; 在備份過(guò)程中,如果有向所述存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)所述使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù); 根據(jù)所述寫入狀態(tài)記錄和所述使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到所述臨時(shí)文件中,則從所述臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從所述存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
3.一種操作系統(tǒng)差量熱備份方法,其特征在于,包括以下步驟:` 對(duì)操作系統(tǒng)自上一次全量備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄; 記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄; 在備份過(guò)程中,如果有向所述存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)所述使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用,如果已被使用則先將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù); 根據(jù)所述寫入狀態(tài)記錄和所述使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到所述臨時(shí)文件中,則從所述臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從所述存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
4.一種文件系統(tǒng)重構(gòu)方法,其特征在于,包括以下步驟: 利用權(quán)利要求1至3中任一項(xiàng)所述的操作系統(tǒng)熱備份方法,對(duì)操作系統(tǒng)進(jìn)行熱備份;根據(jù)原分區(qū)的保留扇區(qū)大小設(shè)定被還原分區(qū)的保留扇區(qū)大小,其中保留扇區(qū)的第一個(gè)扇區(qū)作為啟動(dòng)扇區(qū); 根據(jù)啟動(dòng)扇區(qū)中根入口的數(shù)據(jù)塊號(hào)計(jì)算根目錄的大小,按照從目標(biāo)分區(qū)起始位置開(kāi)始找空閑數(shù)據(jù)塊的規(guī)則在目標(biāo)分區(qū)中分配相同大小的空間,將目錄項(xiàng)拷貝至目標(biāo)分區(qū)所分配的空間,并對(duì)文件分配表作相應(yīng)的已使用標(biāo)記; 根據(jù)根目錄大小得到根目錄中目錄項(xiàng)個(gè)數(shù),讀取目錄項(xiàng)的內(nèi)容,根據(jù)目錄項(xiàng)找到目錄項(xiàng)所指示的文件的的起始位置,按數(shù)據(jù)塊大小讀取文件的數(shù)據(jù),再按從目標(biāo)分區(qū)起始位置開(kāi)始找空閑數(shù)據(jù)塊的規(guī)則,將文件數(shù)據(jù)寫入所找到的空閑數(shù)據(jù)塊中,并在文件分配表中作數(shù)據(jù)塊的已使用記錄; 更新目錄項(xiàng)所指示的文件的起始數(shù)據(jù)塊字段并回寫至該目錄項(xiàng)在目標(biāo)分區(qū)的對(duì)應(yīng)項(xiàng)位置,然后根據(jù)上一個(gè)數(shù)據(jù)塊所指示的位置找到下一個(gè)數(shù)據(jù)塊的位置,繼續(xù)分配空間并在文件分配表中作已使用標(biāo)記和拷貝數(shù)據(jù),直至數(shù)據(jù)塊指示的數(shù)據(jù)塊號(hào)為OxFFFFFFFF。
5.根據(jù)權(quán)利要求4所述的文件系統(tǒng)重構(gòu)方法,其特征在于,該操作系統(tǒng)重構(gòu)方法適用于FAT32文件系統(tǒng)。
6.一種文件系統(tǒng)重構(gòu)方法,其特征在于,包括以下步驟: 利用權(quán)利要求1至3中任一項(xiàng)所述的操作系統(tǒng)熱備份方法,對(duì)操作系統(tǒng)進(jìn)行熱備份; 打開(kāi)備份文件,通過(guò)分析數(shù)據(jù)塊的信息初始化原備份分區(qū)卷信息結(jié)構(gòu); 將原分區(qū)的啟動(dòng)文件拷貝至目標(biāo)分區(qū)的起始位置,計(jì)算主文件表中前4個(gè)文件記錄的備份的起始位置,按從分區(qū)起始位置找空閑數(shù)據(jù)塊的規(guī)則將主文件表中前4個(gè)文件記錄的備份拷貝至目標(biāo)分區(qū); 修改目標(biāo)分區(qū)啟動(dòng)文件的第一個(gè)扇區(qū)的內(nèi)容; 讀取主文件表屬性得到主文件表大小,初始化目標(biāo)分區(qū)的卷信息結(jié)構(gòu),更新主文件表的文件記錄,更新主文件表中前4個(gè)文件記錄的備份的文件記錄,更新使用狀態(tài)記錄的文件記錄,更新壞數(shù)據(jù)塊文 件的文件記錄,讀取原分區(qū)數(shù)據(jù)塊使用狀態(tài)記錄大小和目標(biāo)分區(qū)數(shù)據(jù)塊使用狀態(tài)記錄大小,移動(dòng)所有主文件表的數(shù)據(jù)到目標(biāo)分區(qū),更新主文件表文件記錄中數(shù)據(jù)塊空間分配的位置記錄信息,根據(jù)數(shù)據(jù)塊空間的分配狀況在分區(qū)使用狀態(tài)記錄中作相應(yīng)標(biāo)記,完成整個(gè)主文件表的還原; 根據(jù)主文件表的大小計(jì)算文件記錄個(gè)數(shù),根據(jù)文件記錄個(gè)數(shù)拷貝主文件表外的所有文件; 根據(jù)新生成的分區(qū)使用狀態(tài)記錄信息重寫目標(biāo)分區(qū)的使用狀態(tài)記錄。
7.根據(jù)權(quán)利要求6所述的文件系統(tǒng)重構(gòu)方法,其特征在于,該操作系統(tǒng)重構(gòu)方法適用于NTFS文件系統(tǒng)。
8.一種操作系統(tǒng)全量熱備份裝置,其特征在于,包括: 第一使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄; 第一判斷單元,用于在備份的過(guò)程中,如果有向所述存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)所述第一使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已經(jīng)被使用; 第一寫入單元,用于根據(jù)所述第一判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù); 第一備份單元,用于對(duì)所述使用狀態(tài)記錄中已被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到所述臨時(shí)文件中,則從所述臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從所述存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊進(jìn)行備份。
9.一種操作系統(tǒng)增量熱備份裝置,其特征在于,包括: 第一寫入狀態(tài)記錄單元,用于對(duì)操作系統(tǒng)自上一次備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄;第二使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄; 第二判斷單元,用于在備份的過(guò)程中,如果有向所述存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)所述第二使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用; 第二寫入單元,用于根據(jù)所述第二判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù); 第二備份單元,用于根據(jù)所述寫入狀態(tài)記錄和所述使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到所述臨時(shí)文件中,則從所述臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從所述存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)塊進(jìn)行備份。
10.一種操作系統(tǒng)差量熱備份裝置,其特征在于,包括: 第二寫入狀態(tài)記錄單元,用于對(duì)操作系統(tǒng)自上一次全量備份后的數(shù)據(jù)寫入狀態(tài)進(jìn)行監(jiān)控和記錄,形成寫入狀態(tài)記錄; 第三使用狀態(tài)記錄單元,用于記錄操作系統(tǒng)所在的存儲(chǔ)介質(zhì)中各數(shù)據(jù)塊在開(kāi)始備份時(shí)刻的使用狀態(tài)記錄; 第三判斷單元,用于在備份的過(guò)程中,如果有向所述存儲(chǔ)介質(zhì)的寫入操作,則根據(jù)所述第三使用狀態(tài)記錄單元記錄的使用狀態(tài)記錄判斷要寫入的數(shù)據(jù)塊是否已被使用; 第三寫入單元,用于根據(jù)所述第三判斷單元的判斷,如果要寫入的數(shù)據(jù)塊已被使用則將該數(shù)據(jù)塊中原來(lái)的數(shù)據(jù)保存到臨時(shí)文件后再向該數(shù)據(jù)塊寫入新數(shù)據(jù),否則直接向該數(shù)據(jù)塊寫入新數(shù)據(jù); 第三備份單元,用于根據(jù)所述寫入狀態(tài)記錄和所述使用狀態(tài)記錄,對(duì)既被寫入過(guò)又被使用的數(shù)據(jù)塊進(jìn)行讀取和備份,其中在讀取要備份的數(shù)據(jù)塊時(shí),如果該數(shù)據(jù)塊中的數(shù)據(jù)已被保存到所述臨時(shí)文件中,則從所述臨時(shí)文件中讀取該數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行備份,否則從所述存儲(chǔ)介質(zhì)中讀取數(shù)據(jù)塊進(jìn)行備份。
【文檔編號(hào)】G06F11/34GK103729262SQ201210390529
【公開(kāi)日】2014年4月16日 申請(qǐng)日期:2012年10月12日 優(yōu)先權(quán)日:2012年10月12日
【發(fā)明者】林鵬 申請(qǐng)人:武漢海康威視系統(tǒng)技術(shù)有限公司