專利名稱:計算機(jī)硬盤數(shù)據(jù)快速保護(hù)與恢復(fù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種硬盤數(shù)據(jù)快速保護(hù)與恢復(fù)方法,具體而言,系涉及一種可快速保護(hù)與恢復(fù)硬盤數(shù)據(jù),并且是一種可實(shí)現(xiàn)即插即用不需要浪費(fèi)硬盤空間的方法。
目前,隨著信息社會的發(fā)展,計算機(jī)應(yīng)用日益普及,各種應(yīng)用軟件甚至操作系統(tǒng)也日益復(fù)雜龐大,稍有不慎,或使用者對軟件不很熟悉,計算機(jī)經(jīng)常死機(jī)或數(shù)據(jù)被破壞;同時,計算機(jī)病毒也層出不窮,各種“黑客”也迅速增多,對計算機(jī)的正常使用構(gòu)成了很大的威脅。為了保護(hù)硬盤數(shù)據(jù),傳統(tǒng)的做法大多使用如軟盤、活動硬盤、可插寫光驅(qū)、MO、磁帶機(jī)等存貯介質(zhì),對硬盤數(shù)據(jù)進(jìn)行備份。但是由于數(shù)據(jù)量龐大,耗財耗力,使用非常麻煩。另一種方式是采用像“再生卡”、“還原卡”之類的硬件插卡,但是類似硬件大都采用“硬盤分區(qū)相互備份”的辦法,極大地浪費(fèi)了硬盤空間。所以需要研制一種經(jīng)濟(jì)實(shí)用、又能快速實(shí)現(xiàn)硬盤數(shù)據(jù)保護(hù)與恢復(fù)的產(chǎn)品(方法)。本發(fā)明為這種產(chǎn)品的問世提供了強(qiáng)有力的技術(shù)保障。
因此本發(fā)明的目的在于提供一種可迅速保存與恢復(fù)硬盤數(shù)據(jù),又不浪費(fèi)硬盤空間的方法,使用戶可以放心的、“隨心所欲”地使用計算機(jī)。
為了實(shí)現(xiàn)本發(fā)明之上述目的,本發(fā)明所提供的方法包括下列步驟(1)遍歷硬盤分區(qū)表,找出當(dāng)前硬盤上所有已劃分的分區(qū),逐一將該分區(qū)的起始柱面數(shù)、磁頭、扇區(qū)以及總扇區(qū)數(shù)登記在數(shù)據(jù)結(jié)構(gòu)PartitionDisk中,特別是對于FAT16和FAT32的分區(qū),留作后面計算使用。
(2)遍歷每一個FAT16和FAT32分區(qū)的FAT表(即文件分配表,記錄了每一個文件所占用的硬盤情況),如果FAT表項為“0”,表明該“簇”是自由空間,沒有存放任何數(shù)據(jù);否則,表明該“簇”已經(jīng)存放了數(shù)據(jù)。一個簇代表了硬盤上若干個扇區(qū),因此可以推算出整個硬盤的每個扇區(qū)是否已經(jīng)存放了有用的數(shù)據(jù),用一個標(biāo)志位就可以記錄下這種情況Free→表示沒有有用的數(shù)據(jù)(即空余空間);Oldinfo→表示已經(jīng)存在原有數(shù)據(jù)。
(3)根據(jù)第(2)步得到的標(biāo)志位可以將整個硬盤虛擬為兩大部分,一部分是“原有數(shù)據(jù)區(qū)”,是所有Oldinfo的集合;一部分是“自由空間區(qū)”,是所有Free的集合。以下的各部分操作均有相應(yīng)算法避免對“原有數(shù)據(jù)區(qū)”的刪改,因此自然而然就實(shí)現(xiàn)了對數(shù)據(jù)的保護(hù)。
(4)截獲原有的BIOS中斷向量INT13h,掛上以本方法改寫的新的INT13h中斷,對所有經(jīng)過INT13h的讀寫盤操作進(jìn)行新的“影射”處理。在沒有更換INT13h前,讀寫硬盤的影射關(guān)系是“一對一”的關(guān)系,即操作系統(tǒng)或應(yīng)用程序試圖訪問某一扇區(qū),就驅(qū)動硬盤讀寫該扇區(qū),而本發(fā)明的獨(dú)到之處在于打破了此固定思維邏輯,影射關(guān)系是“一對X”的關(guān)系,X要經(jīng)過本方法計算而出,即操作系統(tǒng)或應(yīng)用程序試圖訪問某一扇區(qū),但并不一定直接讓它讀寫該扇區(qū),而是經(jīng)過計算后,可能讓其訪問另一扇區(qū),這便是本發(fā)明之核心。下面第(5)步為說明其具體影射關(guān)系。
(5)如
圖1所示,經(jīng)過以上步驟,硬盤被虛擬為“原有數(shù)據(jù)區(qū)”和“自由空間區(qū)”兩大部分。圖中的小方塊代表“原有數(shù)據(jù)區(qū)”中的某一個扇區(qū),現(xiàn)舉例描述本發(fā)明的實(shí)現(xiàn)步驟[示例1]圖1中,按順序依此做四步操作,分別代表操作系統(tǒng)或應(yīng)用軟件對硬盤“原有數(shù)據(jù)”的訪問第1步讀某一扇區(qū)(位于“原有數(shù)據(jù)區(qū)”),將該扇區(qū)標(biāo)記為X;第2步寫X;第3步再次讀X;第4步再次寫X;本發(fā)明利用截獲的INT13h中斷,以上四步對硬盤的訪問將依次被影射為第1步讀X,→則直接讀X即可;第2步寫X;→則①在“自由空間”中動態(tài)分配一個扇區(qū)Y;②將Y登記為Otheralloc;③將X的標(biāo)志指向Y,將X登記為Y;④寫數(shù)據(jù)到Y(jié)(注意并非X);第3步再次讀X;→則讀Y(注意并非X);第4步再次寫X;→則寫Y(注意并非X);從以上四步可以看出,本發(fā)明打破了“一對一”的影射邏輯,通過動態(tài)分配,實(shí)現(xiàn)“一對X”的特殊影射,這就是本發(fā)明的獨(dú)到之處。乘示例1已知Y=Otheralloc,按順序依次做四步操作,代表操作系統(tǒng)或應(yīng)用軟件對硬盤的訪問(請參照圖2)。
第5步讀Y;第6步寫Y;
第7步再次讀Y;第8步再次寫Y;本發(fā)明利用截獲的INT13h中斷,以上四步對硬盤的訪問將依次被影射為第5步讀Y;→則直接讀Y即可;第6步寫Y;→則①在“自由空間”中動態(tài)分配一個扇區(qū)Z=Free;②將Z登記為Otheralloc,即Z=Otheralloc;③將Y的標(biāo)志指向Z,即Y=Z;④寫數(shù)據(jù)到Z(注意并非Y);第7步再次讀Y;→則讀Z(注意并非Y);第8步再次寫Y;→則寫Z(注意并非Y);從以上四步可以看出,對于Otheralloc的影射關(guān)系類似于Oldinfo。乘示例1、示例2已知A=Free,按順序依次做四步操作,代表操作系統(tǒng)或應(yīng)用軟件對硬盤的訪問(請參照圖3)。
第9步讀A;第10步寫A;第11步再次讀A;第12步再次寫A;本發(fā)明利用截獲的INT13h中斷,以上四步對硬盤的訪問將依次被影射為第9步讀A;→則直接讀A即可;第10步寫A;→則①將A登記為Selfalloc,即A=Selfalloc;②寫數(shù)據(jù)到A(直接寫A);第11步再次讀A;→則直接讀A;第12步再次寫A;→則直接寫A;從以上四步可以看出,對于Free的訪問是“一對一”的關(guān)系,僅僅是登記A=Selfalloc以防止被示例1、示例2動態(tài)分配。
⑥綜合⑤所描述的情況,整理成下表所描述的規(guī)則
上表所描述的規(guī)則是本發(fā)明的實(shí)施核心。
⑦當(dāng)需要恢復(fù)原有數(shù)據(jù)時,由于本方法不曾刪改原有數(shù)據(jù)區(qū)的任何數(shù)據(jù),故而使得恢復(fù)原有數(shù)據(jù)成為可能。即只需重新清空標(biāo)志位(只剩下Oldinfo和Free),其它狀態(tài)皆消失,立即就實(shí)現(xiàn)了數(shù)據(jù)的快速恢復(fù)。即使曾經(jīng)對硬盤做過極復(fù)雜的操作,也會因?yàn)闃?biāo)志位的清空而于瞬間還原。
⑧當(dāng)需要保護(hù)原有數(shù)據(jù)時,由于某一扇區(qū)的標(biāo)志位被改為X,則只需將X的數(shù)據(jù)搬移回原處即可。然后進(jìn)入①,重新計算所有標(biāo)志位。這樣便實(shí)現(xiàn)了硬盤數(shù)據(jù)的快速保護(hù)。
⑨由于本方法是采用動態(tài)分配“自由空間區(qū)”來實(shí)現(xiàn)規(guī)則⑥的,對于應(yīng)用程序而言,此規(guī)則是透明的。即應(yīng)用程序并不知道有“自由空間”已經(jīng)被分配占用,因而用戶不能察覺空間的變化,對用戶而言,并沒有浪費(fèi)(占用)硬盤空間。這便是本發(fā)明的重大優(yōu)點(diǎn)之一。另外,由于本方法采用的是掃描硬盤分區(qū)表的方法,只要是FAT文件結(jié)構(gòu)就能實(shí)現(xiàn)即插即用,不需要重新劃分硬盤(重分區(qū)),亦即并不破壞硬盤本來數(shù)據(jù)。
本專利之實(shí)施實(shí)體本發(fā)明可以應(yīng)用于“電腦保護(hù)卡”或“電腦保護(hù)軟件”上,卡或軟件是本發(fā)明的實(shí)施實(shí)體,通過截獲INT13h具體實(shí)現(xiàn),而⑥所述之規(guī)則則是本發(fā)明的核心。實(shí)施流程見圖4(本方法之實(shí)施流程圖)。
權(quán)利要求
一種計算機(jī)硬盤數(shù)據(jù)快速保護(hù)與恢復(fù)方法,該方法包括以下步驟(1)遍歷硬盤分區(qū)表;(2)遍歷每一個FAT16和FAT32分區(qū)的FAT表,生成標(biāo)志位數(shù)據(jù)集;(3)根據(jù)標(biāo)志位將整個硬盤虛擬為“原有數(shù)據(jù)區(qū)”(所有Oldinfo的集合)和“自由空間區(qū)”(所有Free的集合)兩大部分;(4)截獲原有的BIOS中斷向量INT13h,掛接新的INT13h中斷,對所有經(jīng)過INT13h的讀寫盤操作進(jìn)行新的“映射”處理,然后交給原來的BIOS中斷向量INT13h進(jìn)行數(shù)據(jù)讀寫,以避免“原有數(shù)據(jù)區(qū)”被破壞;(5)如果要恢復(fù)原有數(shù)據(jù),只需重新初始化標(biāo)志集;(6)如果要保存當(dāng)前數(shù)據(jù),只需根據(jù)標(biāo)志位的改變將被搬移(經(jīng)“映射”處理過)的扇區(qū)中的數(shù)據(jù)拷貝回原處即可;在步驟(1)中,找出當(dāng)前硬盤上的所有分區(qū),逐一將各分區(qū)的起始柱面數(shù)、磁頭、扇區(qū)及總扇區(qū)數(shù)登記在數(shù)據(jù)結(jié)構(gòu)PartitionDisk中;在步驟(2)中,如果FAT表項為“0”,在標(biāo)志集中用Free標(biāo)記;否則,用Oldinfo標(biāo)記。
全文摘要
本發(fā)明系一種計算機(jī)硬盤數(shù)據(jù)保護(hù)與恢復(fù)方法:遍歷硬盤上所有分區(qū)表,對于FAT16和FAT32分區(qū),逐一檢驗(yàn)每個簇是否已經(jīng)記錄有有效數(shù)據(jù),并將之登記在數(shù)據(jù)結(jié)構(gòu)中,然后將所有空閑簇虛擬為一整塊空余的磁道空間,截獲INT13中斷向量,將所有操作系統(tǒng)及應(yīng)用軟件對硬盤的訪問進(jìn)行適當(dāng)轉(zhuǎn)換,及時予以動態(tài)分配虛擬硬盤空間,使所有操作不會破壞原有數(shù)據(jù),從而實(shí)現(xiàn)了對數(shù)據(jù)的保護(hù);當(dāng)恢復(fù)時,只要初始化轉(zhuǎn)換對應(yīng)關(guān)系,便能立即恢復(fù)原有數(shù)據(jù)。因此,本方法能迅速有效地保護(hù)和恢復(fù)硬盤數(shù)據(jù),并且不浪費(fèi)硬盤空間。
文檔編號G06F12/16GK1225476SQ9911570
公開日1999年8月11日 申請日期1999年1月12日 優(yōu)先權(quán)日1999年1月12日
發(fā)明者李增勝 申請人:李增勝