專利名稱:Ntfs卷中從指定目錄中搜索已刪除文件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種搜索已刪除數(shù)據(jù)的方法。
背景技術(shù):
針對用戶錯誤刪除文件或者被他人惡意刪除文件等問題,目前出現(xiàn)了各類數(shù)據(jù)恢復(fù)軟件,可以幫助用戶查找已經(jīng)刪除的文件并恢復(fù),當(dāng)用戶誤刪除某個文件夾下的文件且需要恢復(fù)這些文件時,如果不能定位到這些被刪除文件刪除前所在的目錄,將從根目錄開始遍歷所有路徑,搜索所有已刪除文件,這樣將增加掃描時間,和降低數(shù)據(jù)恢復(fù)軟件的易用性。因此,提供一種快速搜索指定目錄中的已刪除文件的方法極具實(shí)用性。
發(fā)明內(nèi)容
本發(fā)明克服了現(xiàn)有技術(shù)中的缺點(diǎn),提供一種可快速搜索指定目錄中的已刪除文件的方法。
為了解決上述技術(shù)問題,通過以下技術(shù)方案實(shí)現(xiàn)NTFS卷中從指定目錄中搜索已刪除文件的方法,其包括如下過程A.用戶通過輸入設(shè)備輸入需要恢復(fù)文件所在路徑;B.分解用戶輸入的路徑得到第一層目錄名;C.訪問根目錄的MFT并遍歷其90H屬性或A0H屬性得到上述第一層目錄的MFT參考號;D.判斷是否已經(jīng)分解到用戶所輸入路徑的最后一層子目錄,如果是進(jìn)入過程g,否則進(jìn)入過程e;
E.進(jìn)一步分解用戶輸入的路徑得到下一層目錄的目錄名;F.根據(jù)得到的上一層目錄的MFT參考號訪問其MFT并遍歷其90H屬性或A0H屬性得到過程e中所述下一層目錄的MFT參考號,然后進(jìn)入過程d;G.遍歷NTFS卷的$MFT文件中的所有MFT并訪問一個刪除文件,得到其父目錄的MFT參考號;H.判斷是否遍歷完$MFT文件中的所有MFT,如果是轉(zhuǎn)入過程k,如果否進(jìn)入過程i;I.判斷該刪除文件父目錄或者其任意上層目錄的MFT參考號是否和過程f中確定的用戶選擇的最后一層子目錄MFT參考號相等,如果是進(jìn)入過程j,否則返回過程g;J.確定該文件為搜索目標(biāo)文件;K.結(jié)束。
通過本發(fā)明方法可結(jié)合用戶輸入的信息快速查找到用戶需要恢復(fù)的文件,而無需進(jìn)行全盤掃描,影響數(shù)據(jù)恢復(fù)速度。
圖1是本發(fā)明NTFS卷中從指定目錄中搜索已刪除文件的方法的流程圖。
具體實(shí)施例方式
下面參照附圖1并結(jié)合具體例子介紹本發(fā)明的方法,這里假設(shè)用戶輸入的目錄是C\study\english,即需要修復(fù)的文件是在english子目錄內(nèi)。
1.由用戶通過鍵盤輸入目錄C\study\english;2.根據(jù)分隔符“\”分解上述路徑的第一層目錄名“study”;3.訪問該目錄MFT并遍歷其90H屬性或者A0屬性得到第一層目錄“study”的MFT參考號,假設(shè)為m;這里對幾個術(shù)語進(jìn)行簡單介紹,NTFS卷與FAT卷不同,在NTFS卷中有一個$MFT文件,該文件中存放了卷中所有文件(文件夾)的主文件表(Master File Tabl,MFT),并且一一對應(yīng),即每個文件(文件夾)都有自身的MFT參考號。在MFT的屬性列表中,30H屬性$FILE_NAME;90H屬性$INDEX_ROOT;A0H屬性$INDEX_ALLOCATION;即通過90H屬性或者A0屬性可以查找到該文件子目錄的MFT參考號,而通過30H屬性可以獲得該文件父目錄的MFT參考號。
4.判斷是否已經(jīng)分解到用戶所輸入路徑的最后一層子目錄,如果是進(jìn)入過程7,否則進(jìn)入過程5;本例中“study”并非最后一層子目錄,進(jìn)入過程5。
5.進(jìn)一步分解用戶輸入的路徑得到下一層目錄的目錄名“english”6.根據(jù)得到的上一層目錄的MFT參考號m,訪問其MFT并遍歷其90H屬性或A0H屬性得到其下一層目錄“study”的MFT參考號,假設(shè)為n,然后進(jìn)入過程4;7.遍歷NTFS卷的$MFT文件中的所有MFT并訪問一個刪除文件,通過訪問該文件MFT的30H屬性得到其父目錄的MFT參考號;8.判斷該父目錄MFT參考號是否與過程6中確定的用戶選擇的最后一層子目錄“study”的MFT參考號n相等,如果是轉(zhuǎn)到過程11,如果否到過程9;9.根據(jù)過程8中得到的MFT參考號訪問該參考號對應(yīng)文件父目錄的MFT參考號;查找父目錄的MFT參考號的方法與國成7中所述一至,都是通過訪問該文件MFT的30H屬性得到。
10.判斷過程9中得到的父目錄MFT參考號是否為根目錄參考號,如果是跳到過程11,否則跳到過程8;通過過程7、8、9來判斷所刪除文件是否為目錄“study”某層子目錄的文件,因為這種文件也是符合用戶搜索要求的文件。
11.判斷是否遍歷完$MFT文件中的所有MFT,如果是轉(zhuǎn)入過程14,如果否進(jìn)入過程12;該過程判斷是否卷中所有已刪除的文件已經(jīng)全部被遍歷。
12.判斷該刪除文件父目錄或者其任意上層目錄的MFT參考號是否和過程f中確定的用戶選擇的最后一層子目錄“study”的MFT參考號n相等,如果是進(jìn)入過程13,否則返回過程7;13.確定該文件為搜索目標(biāo)文件;即為符合用戶查找要求的刪除文件。
14.結(jié)束。
以上步驟僅用以說明而非限制本發(fā)明的技術(shù)方案。不脫離本發(fā)明精神和范圍的任何修改或局部替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.NTFS卷中從指定目錄中搜索已刪除文件的方法,其特征在于,其包括如下過程a.用戶通過輸入設(shè)備輸入需要恢復(fù)文件所在路徑;b.分解用戶輸入的路徑得到第一層目錄名;c.訪問根目錄的MFT并遍歷其90H屬性或AOH屬性得到上述第一層目錄的MFT參考號;d.判斷是否已經(jīng)分解到用戶所輸入路徑的最后一層子目錄,如果是進(jìn)入過程g,否則進(jìn)入過程e;e.進(jìn)一步分解用戶輸入的路徑得到下一層目錄的目錄名;f.根據(jù)得到的上一層目錄的MFT參考號訪問其MFT并遍歷其90H屬性或AOH屬性得到過程e中所述下一層目錄的MFT參考號,然后進(jìn)入過程d;g.遍歷NTFS卷的$MFT文件中的所有MFT并訪問一個刪除文件,得到其父目錄的MFT參考號;h.判斷是否遍歷完$MFT文件中的所有MFT,如果是轉(zhuǎn)入過程k,如果否進(jìn)入過程i;i.判斷該刪除文件父目錄或者其任意上層目錄的MFT參考號是否和過程f中確定的用戶選擇的最后一層子目錄MFT參考號相等,如果是進(jìn)入過程j,否則返回過程g;j.確定該文件為搜索目標(biāo)文件;k.結(jié)束。
2.根據(jù)權(quán)利要求1所述的NTFS卷中從指定目錄中搜索已刪除文件的方法,其特征在于,在上述過程g與h之間包括如下過程g’.判斷該父目錄MFT參考號是否與過程f中確定的用戶選擇的最后一層子目錄MFT參考號相等,如果是轉(zhuǎn)到過程h,如果否到過程h’;h’.根據(jù)g’中得到的MFT參考號訪問該參考號對應(yīng)文件父目錄的MFT參考號;h”.判斷h’得到的父目錄MFT參考號是否為根目錄參考號,如果是跳到過程h,否則跳到過程g’。
3.根據(jù)權(quán)利要求1或2所述的NTFS卷中從指定目錄中搜索已刪除文件的方法,其特征在于,通過訪問文件的30H屬性得到其父目錄的MFT參考號。
全文摘要
本發(fā)明涉及一種搜索計算機(jī)中已刪除數(shù)據(jù)的方法。其包括如下過程A.輸入需要恢復(fù)文件所在路徑;B.分解路徑得到第一層目錄名;C.訪問根目錄的MFT并遍歷其90H屬性或AOH屬性;D.判斷是否已經(jīng)分解到輸入路徑的最后一層子目錄,如果是進(jìn)入過程G,否進(jìn)入過程E;E.進(jìn)一步分解路徑;F.根據(jù)上一層目錄的MFT參考號訪問其MFT并遍歷其90H屬性或AOH屬性,然后進(jìn)入過程D;G.遍歷$MFT文件中的所有MFT并訪問一個刪除文件;H.判斷是否遍歷完$MFT文件中的所有MFT,如果是轉(zhuǎn)入過程K,否進(jìn)入過程I;I.判斷該刪除文件父目錄或者其任意上層目錄的MFT參考號是否和過程F中確定的最后一層子目錄MFT參考號相等,如果是進(jìn)入過程J,否則返回過程G;J.確定該文件為搜索目標(biāo)文件;K.結(jié)束。
文檔編號G06F17/30GK1920816SQ20061003674
公開日2007年2月28日 申請日期2006年7月28日 優(yōu)先權(quán)日2006年7月28日
發(fā)明者涂彥暉 申請人:珠海金山軟件股份有限公司