国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      彈性文件系統(tǒng)的數(shù)據(jù)恢復方法和裝置制造方法

      文檔序號:6624564閱讀:240來源:國知局
      彈性文件系統(tǒng)的數(shù)據(jù)恢復方法和裝置制造方法
      【專利摘要】本發(fā)明提供了一種彈性文件系統(tǒng)的數(shù)據(jù)恢復方法和裝置,所述方法包括:讀取分區(qū)偏移元數(shù)據(jù)塊信息,獲得主偏移元數(shù)據(jù)塊信息;根據(jù)主偏移元數(shù)據(jù)塊信息,獲得B+樹的根節(jié)點;從B+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項;根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。本發(fā)明通過上述手段,不僅能夠解決傳統(tǒng)的簽名恢復技術針對不連續(xù)文件的恢復存在著恢復不完整的問題,而且能夠保證目錄結構的完整性。
      【專利說明】彈性文件系統(tǒng)的數(shù)據(jù)恢復方法和裝置

      【技術領域】
      [0001]本發(fā)明涉及數(shù)據(jù)存儲【技術領域】,特別地,涉及一種彈性文件系統(tǒng)的數(shù)據(jù)恢復方法和裝置。

      【背景技術】
      [0002]隨著尖端技術的不斷發(fā)展,傳統(tǒng)的文件系統(tǒng)(如微軟的NTFS)架構已經無法滿足現(xiàn)有的需求,彈性文件系統(tǒng)(REFS,Resilient File System)作為微軟最新推出的文件系統(tǒng),憑借其高度的可靠性和巨大的容量性開始被逐步的應用到微軟新版的操作系統(tǒng)上。
      [0003]對于系統(tǒng)使用過程中因誤操作或者惡意操作而導致的數(shù)據(jù)丟失問題,傳統(tǒng)的數(shù)據(jù)恢復工具無法滿足要求,以R-Stud1為例,只能為FAT、NTFS、NTFS5 (Windows 2000系統(tǒng))和EXt2FS(LinuX系統(tǒng))等分區(qū)的磁盤提供數(shù)據(jù)維護方案。針對REFS系統(tǒng)的數(shù)據(jù)恢復問題,一般是通過文件簽名恢復的方法來恢復被刪除的數(shù)據(jù),其缺點是,對于不連續(xù)的碎片文件,可能會出現(xiàn)文件恢復不完整的問題。


      【發(fā)明內容】

      [0004]本發(fā)明提供一種彈性文件系統(tǒng)的數(shù)據(jù)恢復方法,用于解決現(xiàn)有技術對于不連續(xù)的碎片文件無法完整恢復的問題。
      [0005]本發(fā)明還提供了一種彈性文件系統(tǒng)的數(shù)據(jù)恢復裝置,以保證上述方法在實際中的應用。
      [0006]為了解決上述問題,本發(fā)明公開了一種彈性文件系統(tǒng)的數(shù)據(jù)恢復方法,包括:讀取分區(qū)偏移元數(shù)據(jù)塊信息,獲得主偏移元數(shù)據(jù)塊信息;根據(jù)主偏移元數(shù)據(jù)塊信息,獲得B+樹的根節(jié)點;WB+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項;根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。
      [0007]優(yōu)選的,所述獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項的方法具體包括:從I作為當前表項的表項偏移開始,直至當前節(jié)點數(shù)據(jù)塊的最大表項偏移作為當前表項的偏移,判斷當前表項與表項列表中的所有表項是否有交叉,若否,則將當前表項作為空閑表項。
      [0008]優(yōu)選的,所述表項之間是否有交叉的判斷方法具體為:若EntryOffset+EntrySize ^ EntryOffseti 或 EntryOffsetjEntrySizei ^ EntryOffset,則表不當前表項與第 i 個表項不交叉;否則,表示當前表項與第i個表項有交叉;其中,EntryOffset表示當前表項的偏移,EntrySize表示當前表項的大??!EntryOffseti表示第i個表項的偏移,EntrySizei表不第i個表項的大小。
      [0009]優(yōu)選的,根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾,具體包括:若所述空閑表項的大小等于0x38且空閑表項所在的節(jié)點為索引節(jié)點,或者,所述空閑表項的值大小等于0x18且空閑表項內容包括有文件元信息或文件夾元信息,則獲取該節(jié)點的子節(jié)點塊號,解析并恢復該子節(jié)點塊中的文件和/或文件夾。
      [0010]優(yōu)選的,根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾,具體包括:若所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件元信息,則根據(jù)文件結構信息,解析并恢復被刪除的文件,同時記錄該文件的父文件夾標識符;和/或,若所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件夾元信息,則根據(jù)文件夾結構信息,解析并恢復被刪除的文件夾,同時記錄該文件夾標識符及其父文件夾標識符。
      [0011]依據(jù)本發(fā)明的另一優(yōu)選實施例,還公開了一種彈性文件系統(tǒng)的數(shù)據(jù)恢復裝置,包括:根節(jié)點獲取單元,用于讀取分區(qū)偏移元數(shù)據(jù)塊信息,獲得主偏移元數(shù)據(jù)塊信息;以及根據(jù)主偏移元數(shù)據(jù)塊信息,獲得B+樹的根節(jié)點;空閑表項獲取單元,用于從B+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項;數(shù)據(jù)恢復單元,用于根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。
      [0012]優(yōu)選的,所述空閑表項獲取單元獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項的方法具體包括:從I作為當前表項的表項偏移開始,直至當前節(jié)點數(shù)據(jù)塊的最大表項偏移作為當前表項的偏移,判斷當前表項與表項列表中的所有表項是否有交叉,若否,則將當前表項作為空閑表項。
      [0013]優(yōu)選的,判斷表項之間是否有交叉的方法具體為:若EntryOffset+EntrySize ( EntryOffsetj 或EntryOffsetfEntrySizei ^ EntryOffset,則表不當前表項與第 i 個表項不交叉;否則,表示當前表項與第i個表項有交叉;其中,EntryOffset表示當前表項的偏移,EntrySize表示當前表項的大??!EntryOffseti表示第i個表項的偏移,EntrySizei表示第i個表項的大小。
      [0014]優(yōu)選的,所述數(shù)據(jù)恢復單元具體包括:子節(jié)點恢復子單元,用于當所述空閑表項的大小等于0x38且空閑表項所在的節(jié)點為索引節(jié)點,或者,所述空閑表項的值大小等于0x18且空閑表項內容包括有文件元信息或文件夾元信息時,獲取該節(jié)點的子節(jié)點塊號,解析并恢復該子節(jié)點塊中的文件和/或文件夾。
      [0015]優(yōu)選的,所述數(shù)據(jù)恢復單元具體包括:文件恢復子單元,用于當所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件元信息時,根據(jù)文件結構信息解析并恢復被刪除的文件,同時記錄該文件的父文件夾標識符;和/或,文件夾恢復子單元,用于當所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件夾元信息時,根據(jù)文件夾結構信息解析并恢復被刪除的文件夾,同時記錄該文件夾標識符及其父文件夾標識符。
      [0016]與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點:
      [0017]本發(fā)明實施例基于對REFS存儲結構的研究,提出了一種基于B+樹結構的元數(shù)據(jù)信息恢復方法,通過在B+樹中查找因數(shù)據(jù)刪除形成的空閑表項(解決通過表項偏移列表無法獲得空閑表項的問題),并根據(jù)該空閑表項中的內容信息,解析出表項數(shù)據(jù),不僅能夠解決傳統(tǒng)的簽名恢復技術針對不連續(xù)文件的恢復存在著恢復不完整的問題,而且能夠保證目錄結構的完整性。為由于誤操作或者惡意操作而導致的REFS數(shù)據(jù)的丟失提供了解決方案。經實驗驗證,當一個文件被刪除后如果不往REFS分區(qū)中寫入數(shù)據(jù),被刪除的文件可以100%的被恢復。

      【專利附圖】

      【附圖說明】
      [0018]圖1-1為彈性文件系統(tǒng)的組成結構示意圖;
      [0019]圖1-2為彈性文件系統(tǒng)數(shù)據(jù)塊中的表結構示意圖;
      [0020]圖2為本發(fā)明彈性文件系統(tǒng)的數(shù)據(jù)恢復方法一實施例的流程圖;
      [0021]圖3-1為圖2所示的方法實施例中步驟S103的具體實現(xiàn)流程;
      [0022]圖3-2為圖2所示的方法實施例中步驟S104的具體實現(xiàn)流程;
      [0023]圖4為本發(fā)明彈性文件系統(tǒng)的數(shù)據(jù)恢復裝置一實施例的結構示意圖;
      [0024]圖5-1為REFS系統(tǒng)下Logs文件夾在刪除前的列表示意圖;
      [0025]圖5-2為圖5-1所示的Logs文件夾被刪除后用R-Stud1工具的恢復效果示意圖;
      [0026]圖5-3為圖5-1所示的Logs文件夾被刪除后用圖4所示的數(shù)據(jù)恢復裝置的恢復效果示意圖。

      【具體實施方式】
      [0027]在結合附圖和【具體實施方式】對本發(fā)明作進一步詳細的說明之前,首先說明彈性文件系統(tǒng)的存儲結構。
      [0028]彈性文件系統(tǒng)(REFS)由卷頭、POMB(分區(qū)偏移元數(shù)據(jù)塊)、MOMB(主偏移元數(shù)據(jù)塊)和B+樹(B+樹用于描述文件信息、文件夾結構和位置信息)組成。如圖1-1所示。REFS分配存儲空間的基礎單位為塊,每個塊都有編號,從O開始且大小為32個扇區(qū),Μ0ΜΒ、Β+樹的每個節(jié)點都是一個塊。其中:
      [0029]卷頭在第O塊,用于存儲扇區(qū)大小、卷大小等相關的信息;
      [0030]POMB固定存儲在第30個塊中,用于存儲MOMB所在的塊號以及備份的MOMB塊號等信息;
      [0031 ] MOMB塊用于存儲指向B+樹的指針信息。
      [0032]REFS系統(tǒng)每個塊由一個塊頭和一系列的表組成。其中,表的結構由四部分組成:分別為表頭、表項偏移表描述、表項偏移表以及各個表項。如圖1-2所不。表頭可以用于存儲塊的索引信息;表項偏移表描述用于描述表項偏移表的位置以及大小等;表項偏移列表主要用于描述各個表項的位置偏移EntryOffset ;各個表項可以存儲文件信息或者塊索引。
      [0033]每個表項由三部分的組成:表項頭部、表項ID和表項的值。
      [0034]表項頭部包含了如下六部分信息:表項大小EntrySize,用于描述整個表項的大?。槐眄桰D偏移IDOffset ;表項ID的大小IDSize ;表項標志EntryFlags ;值偏移ValueOffset ;值大小ValueSize。其中表項的ID值作為B+樹的關鍵字使用。
      [0035]REFS系統(tǒng)將文件的元信息存儲在一個如圖1-2所示的表中,文件的屬性分布在各個表的表項中存儲。當文件被刪除后,存儲這些文件元信息的表項會變成沒有任何表項偏移指向的空閑表項。一個文件被刪除之后,包含這個文件元信息的表項標志位EntryFlags將發(fā)生變化,但是,這些表項中存儲的與刪除文件相關的元信息卻完整的被保留下來。
      [0036]參照圖2,示出了本發(fā)明彈性文件系統(tǒng)的數(shù)據(jù)恢復方法一實施例的流程,包括以下步驟:
      [0037]步驟SlOl:讀取分區(qū)偏移元數(shù)據(jù)塊POMB信息,獲得主偏移元數(shù)據(jù)塊MOMB信息;
      [0038]步驟S102:根據(jù)主偏移元數(shù)據(jù)塊MOMB信息,獲得B+樹的根節(jié)點;
      [0039]步驟S103:從B+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項;
      [0040]步驟S104:根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。
      [0041]本發(fā)明的下述各實施例將通過對比的方法獲取相應的空閑表項,并且脫離表項偏移列表實現(xiàn)對所有空閑表項的遍歷,進而根據(jù)空閑表項包括的內容(即文件或文件夾刪除后被完整保留下來的相關元信息)恢復出相應的文件或文件夾。
      [0042]文件或文件夾被刪除后,文件或文件夾的元信息所在的表項變成了空閑表項,但是其元信息卻完整的保留下來;正常的流程解析B+樹中的表項無法獲取到這些空閑的表項信息。如圖3-1所示,在本方法實施例的一個優(yōu)選實施例中,采用以下流程實現(xiàn)獲取這些空閑表項(即步驟S103)這一關鍵步驟。
      [0043]在本優(yōu)選實施例中,假設ES = (E1, E2, , EJ表示一個表中所有表項的列表。其中,每個列表中的元素Ei包含兩個屬性:表項偏移EntryOffseti以及表項大小EntrySizep其中,表項偏移EntryOffset都相對于“表項偏移表描述”的開始位置。
      [0044]本優(yōu)選實施例的步驟S103具體包括:
      [0045]步驟S103-1:從表項偏移表描述中獲取相應的表項偏移列表OffsetTable以及最大的表項偏移MaxEntryOffset ;
      [0046]步驟S103-2:遍歷OffsetTable,針對列表中的每個EntryOffseti元素獲取對應的EntrySizei并生成元素Ei加入到ES列表中;
      [0047]在REFS系統(tǒng)中,偏移EntryOffseti處的往后四個字節(jié)即為EntrySizei的值。
      [0048]步驟S103-3:將當前表項偏移CurrentOffset設置為I ;
      [0049]步驟S103-4:判斷CurrentOffset是否大于等于MaxEntryOffset,若是,則結束空閑表項獲取流程,轉步驟S104 ;否則轉步驟S103-5 ;
      [0050]步驟S103-5:獲取當前表項偏移CurrentOffset所對應的表項長度CurrentSize,并將這兩個屬性(CurrentOffset和CurrentSize)作為當前表項CE的屬性值;
      [0051]從偏移CurrentOffset往后的四個字節(jié)表示表項長度;
      [0052]步驟S103-6:判斷表項列表ES中是否存在著與當前表項CE交叉的元素;若不存在,則轉步驟S103-11 ;否則轉步驟S103-7 ;
      [0053]在本優(yōu)選時候說了中,元素交叉的判斷方法為:當元素Ei和元素Ej滿足EntryOfTsetj+EntrySizej ^ EntryOffsetj 或者 EntryOfTsetj+EntrySizej ^ EntryOffseti 條件時,則元素Ei和元素Ej不交叉。否則,元素Ei和元素Ej交叉。
      [0054]步驟S103-7:從ES中選取與CE交叉且表項偏移最小的元素Emin ;
      [0055]步驟S103-8:判斷 EntryOffsetmin 是否等于 CurrentOffset,若是,轉步驟S103-10 ;否則,轉步驟 S103-9 ;
      [0056]步驟SlO3-9:CurrentOffset = CurrentOffset+l,轉步驟 SlO3-4 ;
      [0057]步驟S103-10:CurrentOffset = EntryOffsetmin+EntrySizemin,轉步驟 S103-4 ;
      [0058]步驟S103-11:將偏移為CurrentOffset,大小為CurrentSize的當前表項作為空閑表項,記錄到相關表格中,作為步驟S104恢復被刪除的文件或文件夾的基礎;
      [0059]步驟S103-12:CurrentOffset = CurrentOffset+CurrentSize,步驟 S103-4。
      [0060]如圖3-2所示,在本方法實施例的另一個優(yōu)選實施例中,對于步驟S103獲得的空閑表項,采用如下流程進行處理,以恢復被刪除的文件或文件夾:
      [0061]步驟S104-1:判斷空閑表項的EntrySize是否等于0x38,并且空閑塊所在節(jié)點為索引節(jié)點;若是,轉步驟S104-8 ;否則,轉步驟S104-2 ;
      [0062]步驟S104-2:判斷該空閑表項是否存儲了文件元信息;若是,轉步驟S104-6 ;否則,轉步驟S104-3 ;
      [0063]在本優(yōu)選實施例中,具體的判斷方法為:獲取表項ID,判斷表項ID的前四個字節(jié)是否為0x30000100,若是,則該空閑表項存儲了文件元信息。
      [0064]步驟S104-3:判斷該空閑表項是否存儲了文件夾信息;若是,轉步驟S104-4 ;否貝U,結束對該空閑表項的數(shù)據(jù)恢復流程;
      [0065]在本優(yōu)選實施例中,(具體的判斷方法為:獲取表項ID,判斷表項ID的前四個字節(jié)是否為0x30000200,如果是,則該表項存儲了文件夾元信息;
      [0066]步驟S104-4:判斷表項的ValueSize是否等于24 (B卩0x18);若是,轉步驟S104-8 ;否則,轉步驟S104-5 ;
      [0067]步驟S104-5:根據(jù)文件夾結構信息,解析相應的表項數(shù)據(jù),恢復出相應的文件夾,同時記錄相應的該文件夾標識符DirID及其父文件夾標識符ParentDirID ;然后,結束對該空閑表項的數(shù)據(jù)恢復流程;
      [0068]其中,ParentDirID為空閑表項所在塊從偏移24往后的8個字節(jié)。
      [0069]步驟S104-6:判斷該空閑表項的ValueSize是否等于24 ;若是,轉步驟S104-8 ;否則,轉步驟S104-7 ;
      [0070]步驟S104-7:根據(jù)文件結構信息,解析相應的表項數(shù)據(jù),恢復出相應的文件,同時記錄相應的ParentDirID ;然后,結束對該空閑表項的數(shù)據(jù)恢復流程;
      [0071]其中,ParentDirID為空閑表項所在塊從偏移24往后的8個字節(jié)。
      [0072]步驟S104-8:獲取相應的子節(jié)點塊號SubBlockNumber,并解析并恢復相應子節(jié)點塊上的文件/文件夾;然后,結束對該空閑表項的數(shù)據(jù)恢復流程;
      [0073]其中,子塊號為從偏移ValueOffset往后的8個字節(jié)。
      [0074]對于前述的各方法實施例,為了描述簡單,故將其都表述為一系列的動作組合,但是本領域的技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為根據(jù)本發(fā)明,某些步驟可以采用其他順序或同時執(zhí)行;其次,本領域技術人員也應該知悉,上述方法實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
      [0075]參照圖4,示出了本發(fā)明彈性文件系統(tǒng)的數(shù)據(jù)恢復裝置一實施例的結構示意圖,包括:
      [0076]根節(jié)點獲取單元41,用于讀取分區(qū)偏移元數(shù)據(jù)塊信息,獲得主偏移元數(shù)據(jù)塊信息;以及根據(jù)主偏移元數(shù)據(jù)塊信息,獲得B+樹的根節(jié)點;
      [0077]空閑表項獲取單元42,用于從B+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項;
      [0078]其中,空閑表項獲取單元42獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項的方法具體包括:從I作為當前表項的表項偏移開始,直至當前節(jié)點數(shù)據(jù)塊的最大表項偏移作為當前表項的偏移,判斷當前表項與表項列表中的所有表項是否有交叉,若否,則將當前表項作為空閑表項。
      [0079]上述判斷表項之間是否有交叉的方法具體為:
      [0080]若 EntryOffset+EntrySize ^ EntryOffseti 或 EntryOffset^EntrySizei ^ EntryOffset成立;則表示當前表項與第i個表項不交叉;否則,表示當前表項與第i個表項有交叉;
      [0081]其中,EntryOffset表示當前表項的偏移,EntrySize表示當前表項的大??;EntryOffseti表示第i個表項的偏移,EntrySizei表示第i個表項的大小。
      [0082]數(shù)據(jù)恢復單元43,用于根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。
      [0083]在本優(yōu)選實施例中,數(shù)據(jù)恢復單元43具體包括:
      [0084]子節(jié)點恢復子單元43-1,用于當所述空閑表項的大小等于0x38且空閑表項所在的節(jié)點為索引節(jié)點,或者,所述空閑表項的值大小等于0x18且空閑表項內容包括有文件元信息或文件夾元信息時,獲取該節(jié)點的子節(jié)點塊號,解析并恢復該子節(jié)點塊中的文件和/或文件夾。
      [0085]文件恢復子單元43-2,用于當所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件元信息時,根據(jù)文件結構信息解析并恢復被刪除的文件,同時記錄該文件的父文件夾標識符;
      [0086]文件夾恢復子單元43-3,用于當所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件夾元信息時,根據(jù)文件夾結構信息解析并恢復被刪除的文件夾,同時記錄該文件夾標識符及其父文件夾標識符。
      [0087]為了驗證本發(fā)明彈性文件系統(tǒng)的數(shù)據(jù)恢復裝置的效果,做了如下對比試驗:
      [0088]首先,新建一個REFS的格式的分區(qū)P,拷貝一些文件/文件夾到P分區(qū)的Root文件夾下(參加圖5-1);
      [0089]其次,以“Shift+Delete”方式刪除Logs文件夾后,用R-Stud1恢復,其數(shù)據(jù)恢復效果如圖5-2所示,可以看出,Logs文件夾下的子文件夾BPA和MeasuredBoot沒有被恢復出來。
      [0090]最后,采用本發(fā)明的數(shù)據(jù)恢復裝置進行恢復,其結果如圖5-3所示,可以看出,Logs文件夾下的所有子文件夾及其文件都被成功恢復。
      [0091]需要說明的是,上述裝置或系統(tǒng)實施例屬于優(yōu)選實施例,所涉及的單元和模塊并不一定是本發(fā)明所必須的。
      [0092]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于本發(fā)明的裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
      [0093]以上對本發(fā)明所提供的一種彈性文件系統(tǒng)的數(shù)據(jù)恢復方法和裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
      【權利要求】
      1.一種彈性文件系統(tǒng)的數(shù)據(jù)恢復方法,其特征在于,包括: 讀取分區(qū)偏移元數(shù)據(jù)塊信息,獲得主偏移元數(shù)據(jù)塊信息; 根據(jù)主偏移元數(shù)據(jù)塊信息,獲得B+樹的根節(jié)點; 從B+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項; 根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。
      2.如權利要求1所述的方法,其特征在于,所述獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項的方法具體包括: 從I作為當前表項的表項偏移開始,直至當前節(jié)點數(shù)據(jù)塊的最大表項偏移作為當前表項的偏移,判斷當前表項與表項列表中的所有表項是否有交叉,若否,則將當前表項作為空閑表項。
      3.如權利要求2所述的方法,其特征在于,所述表項之間是否有交叉的判斷方法具體為:
      若 EntryOffset+EntrySize ^ EntryOffseti
      或 EntryOffsetfEntrySizei ^ EntryOffset, 則表示當前表項與第i個表項不交叉;否則,表示當前表項與第i個表項有交叉; 其中,EntryOffset表示當前表項的偏移,EntrySize表示當前表項的大?。籈ntryOffseti表示第i個表項的偏移,EntrySizei表示第i個表項的大小。
      4.如權利要求1所述的方法,其特征在于,根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾,具體包括: 若所述空閑表項的大小等于0x38且空閑表項所在的節(jié)點為索引節(jié)點,或者,所述空閑表項的值大小等于0x18且空閑表項內容包括有文件元信息或文件夾元信息,則獲取該節(jié)點的子節(jié)點塊號,解析并恢復該子節(jié)點塊中的文件和/或文件夾。
      5.如權利要求1所述的方法,其特征在于,根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾,具體包括: 若所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件元信息,則根據(jù)文件結構信息,解析并恢復被刪除的文件,同時記錄該文件的父文件夾標識符; 和/或, 若所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件夾元信息,則根據(jù)文件夾結構信息,解析并恢復被刪除的文件夾,同時記錄該文件夾標識符及其父文件夾標識符。
      6.一種彈性文件系統(tǒng)數(shù)據(jù)恢復裝置,其特征在于,包括: 根節(jié)點獲取單元,用于讀取分區(qū)偏移元數(shù)據(jù)塊信息,獲得主偏移元數(shù)據(jù)塊信息;以及根據(jù)主偏移元數(shù)據(jù)塊信息,獲得B+樹的根節(jié)點; 空閑表項獲取單元,用于從B+樹的根節(jié)點開始遍歷B+樹,獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項; 數(shù)據(jù)恢復單元,用于根據(jù)每個節(jié)點數(shù)據(jù)塊中空閑表項包括的內容恢復被刪除的文件或文件夾。
      7.如權利要求6所述的裝置,其特征在于,所述空閑表項獲取單元獲得每個節(jié)點數(shù)據(jù)塊中的空閑表項的方法具體包括: 從I作為當前表項的表項偏移開始,直至當前節(jié)點數(shù)據(jù)塊的最大表項偏移作為當前表項的偏移,判斷當前表項與表項列表中的所有表項是否有交叉,若否,則將當前表項作為空閑表項。
      8.如權利要求7所述的裝置,其特征在于,判斷表項之間是否有交叉的方法具體為:
      若 EntryOffset+EntrySize ^ EntryOffseti
      或 EntryOffsetfEntrySizei ^ EntryOffset, 則表示當前表項與第i個表項不交叉;否則,表示當前表項與第i個表項有交叉; 其中,EntryOffset表示當前表項的偏移,EntrySize表示當前表項的大?。籈ntryOffseti表示第i個表項的偏移,EntrySizei表示第i個表項的大小。
      9.如權利要求6所述的裝置,其特征在于,所述數(shù)據(jù)恢復單元具體包括: 子節(jié)點恢復子單元,用于當所述空閑表項的大小等于0x38且空閑表項所在的節(jié)點為索引節(jié)點,或者,所述空閑表項的值大小等于0x18且空閑表項內容包括有文件元信息或文件夾元信息時,獲取該節(jié)點的子節(jié)點塊號,解析并恢復該子節(jié)點塊中的文件和/或文件夾。
      10.如權利要求6所述的裝置,其特征在于,所述數(shù)據(jù)恢復單元具體包括: 文件恢復子單元,用于當所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件元信息時,根據(jù)文件結構信息解析并恢復被刪除的文件,同時記錄該文件的父文件夾標識符; 和/或, 文件夾恢復子單元,用于當所述空閑表項的值大小不等于0x18且空閑表項內容包括有文件夾元信息時,根據(jù)文件夾結構信息解析并恢復被刪除的文件夾,同時記錄該文件夾標識符及其父文件夾標識符。
      【文檔編號】G06F17/30GK104199888SQ201410421666
      【公開日】2014年12月10日 申請日期:2014年8月25日 優(yōu)先權日:2014年8月25日
      【發(fā)明者】沈長達, 錢鏡潔, 林藝濱 申請人:廈門市美亞柏科信息股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1