Linux 上特自動恢復工具 e2undel 和特殊情況的恢復殊文件的恢復
馮 銳 (fengrui@cn.ibm.com), 軟件工程師, IBM
王 磊 (cdlwangl@cn.ibm.com), 軟件工程師, IBM
在Linux上恢復系統中刪除的文件是一個非常繁瑣的過程,而 e2undel 這個工具可以用來方便地恢復文件系統中已刪除的文件。本文將首先討論 e2undel 的工作原理和用法,并對之進行一些改進。然后討論了文件系統故障、文件系統重建、磁盤物理損壞等情況下應該如何恢復數據。
在本系列文章的前兩部分中,我們介紹了 ext2 文件系統中各種文件在磁盤上的存儲結構,以及如何利用 debugfs 工具的輔助,手工恢復這些文件的詳細過程。
通過這兩部分的學習,我們可以看出恢復系統中刪除的文件是一個非常繁瑣的過程,需要非常仔細地考慮各種情況,并且要保持足夠的細心,才可能把數據準確無誤地恢復出來。稍有差錯,就會造成數據丟失的情況。聰明的讀者肯定會想,如果有一些好工具來自動或輔助完成數據的恢復過程,那簡直就太好了。
幸運的是,已經有人開發了這樣一些工具,來簡化用戶的數據恢復工作,e2undel 就是其中功能最為強大的一個。
自動恢復工具 e2undel
回想一下,在 ext2 文件系統中刪除一個文件時,該文件本身的數據并沒有被真正刪除,實際執行的操作如下:
在塊位圖中將該文件所占用的數據塊標識為可用狀態。
在索引節點位圖中將該文件所占用的索引節點標識為可用狀態。
將該文件索引節點中的硬鏈接數目設置為 0。
將該文件索引節點中的刪除時間設置為當前時間。
將父目錄項中該文件對應項中的索引節點號設置為 0,并擴展前一項,使其包含該項所占用的空間。
而索引節點中的一些關鍵信息(或稱為元數據,包括文件屬主、訪問權限、文件大小、該文件所占用的數據塊等)都并沒有發生任何變化。因此只要知道了索引節點號,就完全可以用本系列文章介紹的技術將文件完整地從磁盤上恢復出來了,這正是 e2undel 之類的工具賴以生存的基礎。
然而,由于所刪除的文件在目錄項中對應的項中的索引節點號被清空了,因此我們就無法從索引節點中獲得文件名的信息了。不過,由于文件大小、屬主和刪除時間信息依然能反映文件的原始信息,因此我們可以通過這些信息來幫助判斷所刪除的文件是哪個。
e2undel 是由Oliver Diedrich 開發的一個用來恢復 ext2 文件系統中已刪除文件的工具,它會遍歷所檢測的文件系統的索引節點表,從中找出所有被標記為刪除的索引節點,并按照屬主和刪除時間列出這些文件。另外,e2undel 還提供了文件大小信息,并試圖按照 file 命令的方式來確定文件類型。如果您使用 rm –rf * 之類的命令一次刪除了很多文件,這種信息就可以用來非常方便地幫助確定希望恢復的是哪些文件。在選擇要恢復的文件之后,e2undel 會從磁盤上讀取該文件占用的數據塊(這些數據塊的信息全部保存在索引節點中),并將其寫入到一個新文件中。下面我們來看一下 e2undel 這個工具的詳細用法。
新聞熱點
疑難解答