專利名稱:Ntfs卷中重建目錄結(jié)構(gòu)和恢復(fù)數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種恢復(fù)磁盤中數(shù)據(jù)的方法。
背景技術(shù):
當(dāng)一個NTFS分區(qū)被病毒、黑客破壞、誤格式化操作、軟件使用不當(dāng)?shù)仍蛟斐晌募G失,分區(qū)不可訪問時,往往能夠恢復(fù)文件數(shù)據(jù)是不夠的,還必須能夠重現(xiàn)這些文件的目錄結(jié)構(gòu),并且要恢復(fù)這些文件在丟失前的文件名,比如一個軟件中有很多數(shù)據(jù)文件,他們都有固定的目錄結(jié)構(gòu),如果這些目錄層次和文件名被破壞,即使恢復(fù)了所有該軟件目錄中的文件,這個軟件還是不能正常運行的。
發(fā)明內(nèi)容
本發(fā)明克服了現(xiàn)有技術(shù)中的缺點,提供一種可使文件數(shù)據(jù)和文件目錄結(jié)構(gòu)一同恢復(fù)的方法。
為了解決上述技術(shù)問題,通過以下技術(shù)方案實現(xiàn)NTFS卷中重建目錄結(jié)構(gòu)和恢復(fù)數(shù)據(jù)的方法,其包括文件掃描和文件恢復(fù)兩個過程,文件掃描過程包括如下步驟A、定位$MFT數(shù)據(jù)區(qū);B、遍歷文件MFT;C、從該文件MFT中獲取父目錄信息,并向上訪問其上所有目錄,同時根據(jù)其上所有目錄的目錄名重新建立該文件的路徑;D、在包含NTFS卷掃描到的包含文件位置、文件路徑、文件大小、文件各種時間信息等的文件信息表中增加該文件的記錄;E、判斷是否已經(jīng)到了$MFT最后,不是轉(zhuǎn)B,是轉(zhuǎn)F;F、結(jié)束文件掃描過程進(jìn)入文件恢復(fù)過程;文件恢復(fù)模塊包括如下步驟1.從上述文件掃描過程所建立的文件信息表中遍歷取出一個表項;2.根據(jù)表中文件類型信息在用戶所指定路徑建立文件;3.根據(jù)表中文件大小信息和文件在磁盤中的存儲位置對剛建立的文件寫入文件數(shù)據(jù);4.判斷文件表是否為上述文件信息表中的最后表項,如果是進(jìn)入步驟5,否則返回步驟1;5.結(jié)束。
本發(fā)明方法不依賴本來的文件系統(tǒng),直接對磁盤的扇區(qū)進(jìn)行掃描,結(jié)合某些特定文件類型所具有的特定標(biāo)志,判斷該文件在磁盤中的具體位置,再根據(jù)該位置信息和文件的類型信息重新建立文件,該方法可以作為其他根據(jù)文件系統(tǒng)恢復(fù)數(shù)據(jù)方法的有效補充。
圖1是本發(fā)明方法中文件掃描過程流程圖;圖2是本發(fā)明方法中文件恢復(fù)過程流程圖。
具體實施例方式
下面參照圖1和圖2介紹本發(fā)明方法的過程和工作原理。
一種NTFS卷中重建目錄結(jié)構(gòu)和恢復(fù)數(shù)據(jù)的方法主要包括兩個過程,文件掃描過程和文件恢復(fù)過程。文件掃描過程主要是遍歷磁盤的$MFT(主文件表),通過掃描MFT中的各種屬性信息,得到全部文件的數(shù)據(jù)屬性、文件路徑、文件大小、文件各種時間等信息,并將這些信息記錄在一個新建的文件信息表中;文件恢復(fù)過程主要是利用上述文件信息表,重新建立文件,恢復(fù)文件。
文件掃描過程如圖1所示
a.定位$MFT數(shù)據(jù)區(qū);NTFS卷與FAT卷不同,在NTFS卷中有一個$MFT文件,該文件中存放了卷中所有文件(文件夾)的主文件表(Master File Table,MFT),并且一一對應(yīng),即每個文件(文件夾)都有自身的MFT參考號。在MFT的屬性列表中有多種屬性信息,如,10$STANDARD_INFORMATION(標(biāo)準(zhǔn)信息);20$ATTRIBUTE_LIST(屬性列表);30$FILE_NAME(文件名);40$VOLUME_VERSION(卷版本);50$SECURITY Descriptor(安全描述符);60$VOLUME_NAME(卷名);70$VOLUME_INFORMATION(卷信息);80$DATA(數(shù)據(jù));90$INDEX_ROOT(索引根)等。
b.遍歷文件MFT;確保磁盤內(nèi)的文件全部恢復(fù)。
c.從該文件MFT中獲取父目錄信息,并向上訪問其上所有目錄,同時根據(jù)其上所有目錄的目錄名重新建立該文件的路徑;本方法中是通過訪問MFT中的30屬性可以獲得該文件父目錄的MFT參考號;通過該步驟可獲取每個文件(文件夾)的絕對路徑,以便后續(xù)恢復(fù)數(shù)據(jù)過程中保證文件的目錄結(jié)構(gòu)不變。
d.在包含NTFS卷掃描到的包含文件數(shù)據(jù)屬性、文件路徑、文件大小、文件各種時間信息等的文件信息表中增加該文件的記錄;上述各類信息也是通過訪問MFT中的各對應(yīng)屬性得到的。
e.判斷是否已經(jīng)到了$MFT最后,不是轉(zhuǎn)b,是轉(zhuǎn)f;f.結(jié)束文件掃描過程進(jìn)入文件恢復(fù)過程;文件恢復(fù)過程如圖2所示1.上述文件掃描過程所建立的文件信息表中遍歷取出一個表項;每個表項對應(yīng)一個文件(文件夾),其中含有該文件(文件夾)的文件數(shù)據(jù)屬性、文件路徑、文件大小、文件各種時間信息等的文件信息。
2.根據(jù)表中文件類型信息在用戶所指定路徑建立文件;3.根據(jù)表中文件大小信息和文件在磁盤中的存儲位置對剛建立的文件寫入文件數(shù)據(jù);4.判斷文件表是否為上述文件信息表中的最后表項,如果是進(jìn)入步驟5,否則返回步驟1;5.結(jié)束。
以上步驟僅用以說明而非限制本發(fā)明的技術(shù)方案。不脫離本發(fā)明精神和范圍的任何修改或局部替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.NTFS卷中重建目錄結(jié)構(gòu)和恢復(fù)數(shù)據(jù)的方法,其特征在于,其包括文件掃描和文件恢復(fù)兩個過程,文件掃描過程包括如下步驟a.定位$MFT數(shù)據(jù)區(qū);b.遍歷文件MFT;c.從該文件MFT中獲取父目錄信息,并向上訪問其上所有目錄,同時根據(jù)其上所有目錄的目錄名重新建立該文件的路徑;d.在包含NTFS卷掃描到的包含文件數(shù)據(jù)屬性、文件路徑、文件大小、文件各種時間信息等的文件信息表中增加該文件的記錄;e.判斷是否已經(jīng)到了$MFT最后,不是轉(zhuǎn)b,是轉(zhuǎn)f;f.結(jié)束文件掃描過程進(jìn)入文件恢復(fù)過程;文件恢復(fù)模塊包括如下步驟I.從上述文件掃描過程所建立的文件信息表中遍歷取出一個表項;II.根據(jù)表中文件類型信息在用戶所指定路徑建立文件;III.根據(jù)表中文件大小信息和文件在磁盤中的存儲位置對剛建立的文件寫入文件數(shù)據(jù);IV.判斷文件表是否為上述文件信息表中的最后表項,如果是進(jìn)入步驟V,否則返回步驟I;V.結(jié)束。
2.根據(jù)權(quán)利要求1所述的NTFS卷中重建目錄結(jié)構(gòu)和恢復(fù)數(shù)據(jù)的方法,其特征在于,所述步驟d中的文件數(shù)據(jù)屬性信息通過遍歷該文件的80H屬性得到。
全文摘要
本發(fā)明涉及一種恢復(fù)磁盤中數(shù)據(jù)的方法。本方法包括文件掃描和文件恢復(fù)過程,文件掃描過程包括i.定位$MFT數(shù)據(jù)區(qū);ii.遍歷文件MFT;iii.從該文件MFT中獲取父目錄信息,向上訪問其上所有目錄,重新建立該文件的路徑;iv.在文件信息表中增加該文件的記錄;v.判斷是否已經(jīng)到了$MFT最后,不是轉(zhuǎn)B,是轉(zhuǎn)F;vi.結(jié)束文件掃描過程進(jìn)入文件恢復(fù)過程;文件恢復(fù)模塊包括如下步驟1.從上述文件信息表中遍歷取出一個表項;2.根據(jù)表中文件類型信息在用戶所指定路徑建立文件;3.根據(jù)表中文件大小信息和文件在磁盤中的存儲位置對剛建立的文件寫入文件數(shù)據(jù);4.判斷文件表是否為上述文件信息表中的最后表項,如果是進(jìn)入步驟5,否則返回步驟1;5.結(jié)束。
文檔編號G06F17/30GK1959649SQ200610122248
公開日2007年5月9日 申請日期2006年9月19日 優(yōu)先權(quán)日2006年9月19日
發(fā)明者涂彥暉 申請人:珠海金山軟件股份有限公司