專利名稱:一種數(shù)據(jù)恢復方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機系統(tǒng),更具體地說,涉及一種用于MAC OS X下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復方法及系統(tǒng),以找回被刪除的文件。
背景技術:
目前數(shù)據(jù)恢復一般分“深度掃描”和“快速掃描”?!吧疃葤呙琛备鶕?jù)特定文件的標識來對整個磁盤進行掃描,缺點是掃描速度慢,沒有文件名、文件路徑、文件創(chuàng)建時間等信息?!翱焖賿呙琛备鶕?jù)文件系統(tǒng)的文件描述信息來恢復。彌補了深度掃描的缺點,掃描速度快,有文件名、文件路徑、文件創(chuàng)建時間等信息。Windows平臺下的文件系統(tǒng)一般是NTFS、fat32等,用戶刪除文件以后,只在文件描述信息里更改為已經(jīng)刪除。在恢復的時候只需要重新設為沒刪除,即可達到“快速掃描” 恢復文件的目的。但在MAC平臺下的HFS+文件系統(tǒng),用戶刪除文件以后,連同文件描述信息一并被刪除。這就無法實現(xiàn)Windows下那樣的“快速掃描”。所以一般Windows—般提供“深度掃描”和“快速掃描”兩種掃描方式,而Mac OS下只提供“深度掃描”而沒“快速掃描”。例如,現(xiàn)有的專門用于崩潰發(fā)生后的數(shù)據(jù)恢復的軟件產(chǎn)SMellar Phoenix僅僅提供扇區(qū)(深度)掃描的方式。Mac OS是一套運行于蘋果Macintosh系列電腦上的操作系統(tǒng),是首個在商用領域成功的圖形用戶界面。HFS+是蘋果Mac OS下的一個文件系統(tǒng),有日志式和非日志式。在 Mac OS平臺上,對HFS+文件系統(tǒng)的數(shù)據(jù)恢復傳統(tǒng)采用扇區(qū)掃描的方式,其存在以下缺陷1)沒有創(chuàng)建日期;2)沒有修改日期;3)文件大小可能不正確;4)沒有原始文件名;5)沒有文件的目錄結構;6)對有碎片的文件無法恢復;7)掃描時間非常慢。因此需要開發(fā)一種快速、且能夠提供部分文件信息例如創(chuàng)建日期、修改日期、文件大小、原始文件名等的數(shù)據(jù)恢復方式。
發(fā)明內容
本發(fā)明要解決的技術問題在于,針對現(xiàn)有技術中對MAC OS X下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復一般采用扇區(qū)掃描,掃描速度慢且恢復的數(shù)據(jù)缺少文件名、文件路徑、文件創(chuàng)建時間等信息的缺陷,提供一種數(shù)據(jù)恢復方法,其根據(jù)日志進行數(shù)據(jù)恢復,可以找回用戶不小心刪除的文件。本發(fā)明要解決的另一技術問題在于,針對現(xiàn)有技術中對MAC OS X下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復一般采用扇區(qū)掃描,掃描速度慢且恢復的數(shù)據(jù)缺少文件名、文件路徑、文件創(chuàng)建時間等信息的缺陷,提供一種數(shù)據(jù)恢復系統(tǒng),其根據(jù)日志進行數(shù)據(jù)恢復,可以找回用戶不小心刪除的文件。本發(fā)明解決其技術問題所采用的技術方案是提供一種數(shù)據(jù)恢復方法,用于蘋果 MAC OSX下的HFS+文件系統(tǒng),所述數(shù)據(jù)恢復方法包括A、讀取HFS+文件系統(tǒng)中的日志;B、分析所述日志,以獲取日志中的文件描述信息;C、利用日志中包含的文件描述信息來恢復文件。在本發(fā)明所述的數(shù)據(jù)恢復方法中,所述文件描述信息包括文件名、文件路徑、創(chuàng)建時間、以及文件的數(shù)據(jù)區(qū);其中,所述文件路徑包括文件所在目錄項的ID(catal0g node ID)禾口父目錄項的 ID (parent catalog node ID)。在本發(fā)明所述的數(shù)據(jù)恢復方法中,所述讀取HFS+文件系統(tǒng)中的日志包括Al、通過分析磁盤的分區(qū)表獲取HFS+文件系統(tǒng)的卷;A2、分析HFS+文件系統(tǒng)的卷頭,獲取該卷的日志的位置,并讀日志到內存中。在本發(fā)明所述的數(shù)據(jù)恢復方法中,所述分析所述日志包括Bi、讀取所述日志一個扇區(qū)的內容;B2、反序列化該扇區(qū)為一個塊列表頭(blockjistjieader)結構,并檢驗校驗和是否正確,如正確,進行步驟B3,如不正確,執(zhí)行步驟B4 ;B3、獲取所述塊列表(block list)中所有的目錄項文件塊(Catalog File block),由此得到文件記錄(file record)和目錄記錄(folder record);B4、轉到下一個扇區(qū),繼續(xù)步驟Bl至B3的操作,直到整個日志文件讀完。在本發(fā)明所述的數(shù)據(jù)恢復方法中,所述檢驗校驗和包括檢查所述扇區(qū)的前32字節(jié)為塊列表頭(blockjistjieader)時,校驗和是否為0,且如果校驗和為0,則是正確的塊列表(block list)。在本發(fā)明所述的數(shù)據(jù)恢復方法中,所述利用日志中包含的文件描述信息來恢復文件包括Cl、構造完整路徑,其中根據(jù)目錄項文件(Catalog File)結構中的節(jié)點名稱 (nodeName)、目錄項的 ID (catalog node ID)禾口父目錄項的 ID (parent catalog node ID) 鏈接出正確的路徑;C2、恢復文件內容,其中利用目錄項文件記錄(Catalog File Records)中的數(shù)據(jù)區(qū)(dataFork)字段恢復該文件的數(shù)據(jù)。本發(fā)明解決其技術問題所采用的另一技術方案是構造一種數(shù)據(jù)恢復系統(tǒng),用于蘋果MAC OSX下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復,其特征在于,所述數(shù)據(jù)恢復系統(tǒng)包括用于讀取HFS+文件系統(tǒng)中的日志的裝置;用于分析所述日志的裝置;及用于利用日志中包含的文件描述信息來恢復文件的裝置。在本發(fā)明所述的數(shù)據(jù)恢復系統(tǒng)中,所述用于讀取HFS+文件系統(tǒng)中的日志的裝置執(zhí)行如下步驟Al、通過分析磁盤的分區(qū)表獲取HFS+文件系統(tǒng)的卷;A2、分析HFS+文件系統(tǒng)的卷頭,獲取該卷的日志的位置,并讀日志到內存中。
在本發(fā)明所述的數(shù)據(jù)恢復系統(tǒng)中,所述用于分析所述日志的裝置執(zhí)行如下步驟Bi、讀取所述日志一個扇區(qū)的內容;B2、反序列化該扇區(qū)為一個塊列表頭(blockjistjieader)結構,并檢驗校驗和是否正確,如正確,進行步驟B3,如不正確,執(zhí)行步驟B4 ;B3、獲取所述塊列表(block list)中所有的目錄項文件塊(Catalog File block),由此得到文件記錄(file record)和目錄記錄(folder record);B4、轉到下一個扇區(qū),繼續(xù)步驟Bl至B3的操作,直到整個日志文件讀完。在本發(fā)明所述的數(shù)據(jù)恢復系統(tǒng)中,所述用于利用日志中包含的文件描述信息來恢復文件的裝置執(zhí)行如下步驟Cl、構造完整路徑,其中根據(jù)目錄項文件(Catalog File)結構中的節(jié)點名稱 (nodeName)、目錄項的 ID (catalog node ID)禾口父目錄項的 ID (parent catalog node ID) 鏈接出正確的路徑;C2、恢復文件內容,其中利用目錄項文件記錄(Catalog File Records)中的數(shù)據(jù)區(qū)(dataFork)字段恢復該文件的數(shù)據(jù)。實施本發(fā)明的數(shù)據(jù)恢復方法,具有以下有益效果通過HFS+文件系統(tǒng)根據(jù)日志來進行數(shù)據(jù)恢復,實現(xiàn)了 MAC下“快速掃描”的效果,解決了 MAC下恢復數(shù)據(jù)文件沒有原始文件名,沒有文件路徑等諸多缺點,速度也比“深度掃描”快很多倍。
下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1是本發(fā)明的數(shù)據(jù)恢復方法的流程圖;圖2A是圖1中步驟A的詳細流程圖;圖2B是圖1中步驟B的詳細流程圖;圖2C是圖1中步驟C的詳細流程圖;圖3是根據(jù)本發(fā)明數(shù)據(jù)恢復方法中讀日志和分析日志過程的一實施例的流程圖。
具體實施例方式在MAC OS下的HFS+文件系統(tǒng)中,日志是指在HFS+中為保持文件系統(tǒng)的正確性而維護的一個數(shù)據(jù)區(qū),其中保存了與文件操作相關的一些信息。在對HFS+文件系統(tǒng)進一步研究后,發(fā)現(xiàn)當用戶對文件進行移動、刪除、創(chuàng)建等操作時,同時會往它的日志系統(tǒng)里寫日志, 以在不正常關機的情況下,對文件系統(tǒng)進行校驗,以保證文件系統(tǒng)的完整性。這些日志里同時也包含了一些刪除文件的文件描述信息。如前所述,在MAC平臺下的HFS+文件系統(tǒng),用戶刪除文件以后,連同文件描述信息一并被刪除。但是在一段時間內,最近被刪除文件的數(shù)據(jù)及其文件描述信息還會保存在日志內。針對這一情況,本發(fā)明構思一種用于蘋果MAC OSX下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復方法。本發(fā)明的技術方案正是通過分析這些日志,分析出被刪除文件的文件描述信息,再利用這些信息來恢復文件,進行“快速掃描”。上述文件描述信息包括文件名、文件路徑、創(chuàng)建時間、以及文件的數(shù)據(jù)區(qū)等。其中,所述文件路徑包括文件所在目錄項的ID和父目錄項的 ID。
如圖1所示,本發(fā)明用于蘋果MAC OSX下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復方法包括讀 HFS+文件系統(tǒng)中的日志,如步驟A所示;分析該日志,如步驟B所示,以獲取日志中的文件描述信息;以及利用日志中包含的文件描述信息來恢復文件,如步驟C所示。圖2A、2B和2C分別示出了圖1中步驟A、步驟B和步驟C的詳細分解步驟。如圖2A所示,圖1中步驟A中讀取HFS+文件系統(tǒng)中的日志包括步驟Al,通過分析磁盤的分區(qū)表獲取HFS+文件系統(tǒng)的卷;和步驟A2,分析HFS+文件系統(tǒng)的卷頭,獲取該卷的日志的位置,并讀日志到內存中。如圖2B所示,圖1中步驟B中分析日志以獲取日志中的文件描述信息包括步驟Bi,讀取所述日志一個扇區(qū)的內容;步驟B2,反序列化該扇區(qū)為一個塊列表頭結構,并檢驗校驗和是否正確,如正確, 進行步驟B3,如不正確,執(zhí)行步驟B4 ;步驟B3,獲取所述塊列表中所有的目錄項文件塊,由此得到文件記錄和目錄記錄; 和步驟B4,轉到下一個扇區(qū),繼續(xù)步驟Bl至B3的操作,直到整個日志文件讀完。如圖2C所示,圖1中步驟C中利用日志中包含的文件描述信息來恢復文件包括步驟Cl,構造完整路徑,其中根據(jù)目錄項文件結構中的節(jié)點名稱、目錄項的ID和父目錄項的ID鏈接出正確的路徑;和步驟C2,恢復文件內容,其中利用目錄項文件記錄中的數(shù)據(jù)區(qū)字段恢復該文件的數(shù)據(jù)。如圖3所示,在本發(fā)明數(shù)據(jù)恢復方法的讀日志及分析日志過程中,開始步驟之后,在步驟102,讀卷頭,其中包括通過分析磁盤的分區(qū)表得到HFS+文件系統(tǒng)的卷,并分析 HFS+文件系統(tǒng)的卷頭,以得到此卷的日志的位置。在步驟104中,將日志讀到內存中。在步驟106,讀取日志一個扇區(qū)的內容。隨后,在步驟108,反序列化該扇區(qū)為一個塊列表頭 (block_list_header)結構。在步驟110,檢驗該塊列表頭的校驗和是否正確,如正確,進行步驟112。在步驟112,獲取該塊列表(block list)中所有的目錄項文件塊(Catalog File block)。在步驟114,解析文件記錄(file record)和目錄記錄(folder record)。之后, 執(zhí)行步驟116,讀日志的下一個扇區(qū)。當在步驟110中,當該塊列表頭的校驗和不正確,執(zhí)行步驟116,讀日志的下一個扇區(qū)。在步驟118中,判斷對志的下一個扇區(qū)的讀取是否成功,如果成功,則返回步驟 108,重復步驟108至116。如果失敗,則日志已解析完畢。在本發(fā)明的一實施例中,步驟110中檢驗該塊列表頭的校驗和是這樣實現(xiàn)的該扇區(qū)的前32字節(jié)為塊列表頭(bloCk_liSt_header)時,檢查校驗和是否為0,且如果校驗和為0,則是正確的塊列表(block list)。如果校驗和不為0,則是不正確的塊列表(block 1 ist),因此跳過該塊列表,讀日志的下一個扇區(qū)。使用本發(fā)明的方法可以恢復各種數(shù)據(jù)文件,如文本文件、圖片文件、音頻/視頻文件等。例如,某文本文件/a/b/c.txt被刪除。操作系統(tǒng)會將刪除的動作所涉及的節(jié)點 (node)打包為事務(transaction),放到日志中。該事件(transaction)是在一個塊列表(block list)中。在這個列表(list)中可能會有a、b、c. txt三個記錄(record)。通過先搜索塊列表頭(bloCk_liSt_header)的方式找到塊列表(block list),再由塊信息 (block_info)的數(shù)組找到這些記錄(record)。記下所有文件記錄(file record)和目錄記錄(folder record),例如 a 目錄記錄(folder record), b 目錄記錄(folder record), c. txt文件記錄(file record),每個記錄(record)有一個自身ID和父目錄ID (PID),例如 a(ID = 3,PID = 2),b(ID = 5,PID = 3),c. txt (ID = 11,PID = 5),此處文件 c. txt 的 PID是b的ID,b的PID是a的ID,a的PID沒有找到,所以目錄結構為a/b/c. txt,它就是完整的路徑名。又文件記錄(file record)所示文件c. txt包含數(shù)據(jù)區(qū)(dataFork),根據(jù)其記錄就能找到文件內容在分區(qū)的分布,讀出這些扇區(qū)的內容保存到一個新文件即可恢復文件c. txt的內容。本發(fā)明實施例還公開了一種數(shù)據(jù)恢復系統(tǒng),用于蘋果MAC OSX下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復,所述數(shù)據(jù)恢復系統(tǒng)包括用于讀取HFS+文件系統(tǒng)中的日志的裝置;用于分析所述日志的裝置;及用于利用日志中包含的文件描述信息來恢復文件的裝置。需要說明的是,該數(shù)據(jù)恢復系統(tǒng)的具體結構以及處理流程,請參考上述方法項實施例的描述,這里不再贅述。
權利要求
1.一種數(shù)據(jù)恢復方法,用于蘋果MAC OSX下的HFS+文件系統(tǒng),其特征在于,所述數(shù)據(jù)恢復方法包括A、讀取HFS+文件系統(tǒng)中的日志;B、分析所述日志,以獲取日志中的文件描述信息;C、利用日志中包含的文件描述信息來恢復文件。
2.根據(jù)權利要求1所述的數(shù)據(jù)恢復方法,其特征在于,所述文件描述信息包括文件名、文件路徑、創(chuàng)建時間、以及文件的數(shù)據(jù)區(qū);其中,所述文件路徑包括文件所在目錄項的 ID和父目錄項的ID。
3.根據(jù)權利要求2所述的數(shù)據(jù)恢復方法,其特征在于,所述讀取HFS+文件系統(tǒng)中的日志包括Al、通過分析磁盤的分區(qū)表獲取HFS+文件系統(tǒng)的卷;A2、分析HFS+文件系統(tǒng)的卷頭,獲取該卷的日志的位置,并讀日志到內存中。
4.根據(jù)權利要求1-3任一項所述的數(shù)據(jù)恢復方法,其特征在于,所述分析所述日志包括Bi、讀取所述日志一個扇區(qū)的內容;B2、反序列化該扇區(qū)為一個塊列表頭結構,并檢驗校驗和是否正確,如正確,進行步驟 B3,如不正確,執(zhí)行步驟B4 ;B3、獲取所述塊列表中所有的目錄項文件塊,由此得到文件記錄和目錄記錄; B4、轉到下一個扇區(qū),繼續(xù)步驟Bl至B3的操作,直到整個日志文件讀完。
5.根據(jù)權利要求4所述的數(shù)據(jù)恢復方法,其特征在于,所述檢驗校驗和包括檢查所述扇區(qū)的前32字節(jié)為塊列表頭時,校驗和是否為0,且如果校驗和為0,則是正確的塊列表。
6.根據(jù)權利要求4所述的數(shù)據(jù)恢復方法,其特征在于,所述利用日志中包含的文件描述信息來恢復文件包括Cl、構造完整路徑,其中根據(jù)目錄項文件結構中的節(jié)點名稱、目錄項的ID和父目錄項的ID鏈接出正確的路徑;C2、恢復文件內容,其中利用目錄項文件記錄中的數(shù)據(jù)區(qū)字段恢復該文件的數(shù)據(jù)。
7.一種數(shù)據(jù)恢復系統(tǒng),用于蘋果MAC OSX下的HFS+文件系統(tǒng)的數(shù)據(jù)恢復,其特征在于, 所述數(shù)據(jù)恢復系統(tǒng)包括用于讀取HFS+文件系統(tǒng)中的日志的裝置; 用于分析所述日志的裝置;及用于利用日志中包含的文件描述信息來恢復文件的裝置。
8.根據(jù)權利要求7所述的數(shù)據(jù)恢復系統(tǒng),其特征在于,所述讀取HFS+文件系統(tǒng)中的日志的裝置執(zhí)行如下步驟Al、通過分析磁盤的分區(qū)表獲取HFS+文件系統(tǒng)的卷;A2、分析HFS+文件系統(tǒng)的卷頭,獲取該卷的日志的位置,并讀日志到內存中。
9.根據(jù)權利要求7或8所述的數(shù)據(jù)恢復系統(tǒng),其特征在于,所述用于分析所述日志的裝置執(zhí)行如下步驟Bi、讀取所述日志一個扇區(qū)的內容;B2、反序列化該扇區(qū)為一個塊列表頭結構,并檢驗校驗和是否正確,如正確,進行步驟B3,如不正確,執(zhí)行步驟B4 ;B3、獲取所述塊列表中所有的目錄項文件塊,由此得到文件記錄和目錄記錄; B4、轉到下一個扇區(qū),繼續(xù)步驟Bl至B3的操作,直到整個日志文件讀完。
10.根據(jù)權利要求9所述的數(shù)據(jù)恢復系統(tǒng),其特征在于,所述用于利用日志中包含的文件描述信息來恢復文件的裝置執(zhí)行如下步驟Cl、構造完整路徑,其中根據(jù)目錄項文件結構中的節(jié)點名稱、目錄項的ID和父目錄項的ID鏈接出正確的路徑;C2、恢復文件內容,其中利用目錄項文件記錄中的數(shù)據(jù)區(qū)字段恢復該文件的數(shù)據(jù)。
全文摘要
本發(fā)明涉及數(shù)據(jù)恢復方法及系統(tǒng),用于蘋果MAC OSX下的HFS+文件系統(tǒng)的恢復。所述方法包括A、讀取日志;B、分析日志;C、利用日志中包含的文件描述信息來恢復文件。其中,所述文件描述信息包括文件名、文件路徑、創(chuàng)建時間、以及文件的數(shù)據(jù)區(qū);其中,所述文件路徑包括文件所在目錄項的ID和父目錄項ID。實施本發(fā)明的數(shù)據(jù)恢復方法及系統(tǒng),具有以下有益效果通過HFS+文件系統(tǒng)根據(jù)日志來進行數(shù)據(jù)恢復,實現(xiàn)了MAC下“快速掃描”的效果,解決了MAC下恢復數(shù)據(jù)文件沒有原始文件名,沒有文件路徑等諸多缺點,速度也比“深度掃描”快很多倍。
文檔編號G06F11/14GK102289524SQ20111028854
公開日2011年12月21日 申請日期2011年9月26日 優(yōu)先權日2011年9月26日
發(fā)明者馮星 申請人:深圳市萬興軟件有限公司