天天看點

ext3檔案系統反删除利器ext3grep應用實戰

一、“rm –rf”帶來的困惑

    國外一份非常著名的linux系統管理者守則中有這麼一條“慎用 rm –rf 指令,除非你知道此指令将帶來什麼後果”,可見,這個指令對系統管理者的重要性。在實際的工作中,由此指令帶來的誤删除資料案例屢見不鮮,很多系統管理者都遇到過或者犯過這樣的錯誤。由于開發人員對指令的不熟悉,或者粗心大意、疏于管理,執行了此指令,資料在一瞬間就被清空了。linux不具備類似資源回收筒的功能,這就意味着資料丢失。雖然linux自身提供了恢複資料的機制,但是這個功能基本沒用,要恢複資料,通過正常手段是無法完成的,此時,隻有找專業的資料恢複公司來恢複資料,這樣無疑要付出很大的成本和費用,造成無法估量的的損失。

    可見,作為系統管理者,一定要有資料安全意識,資料保護意識,嚴格遵守相關維護守則,将這種失誤帶來的損失降低到最低。幸運的是,linux下提供了一款開源軟體恢複誤删的資料,利用這個ext3檔案系統資料恢複工具ext3grep可以恢複誤删除的資料。

二、 ext3grep的安裝與使用

    ext3grep是一個開源的ext3檔案系統反删除工具,在ext3grep出現之前,資料被删除後,通過正常手段恢複基本是不可能的,雖然debugfs指令可以對ext2檔案系統做一些恢複,但是對ext3檔案系統就無能為力了。ext3是一個日志型檔案系統,ext3grep正是通過分析ext3檔案系統的日志資訊來恢複被删除的檔案和資料的。

作業系統環境:centos release 6.4。

ext3grep版本:ext3grep-0.10.1。

ext3grep官方網站:http://code.google.com/p/ext3grep/,可以從這裡下載下傳最新的ext3grep版本。這裡下載下傳的是ext3grep-0.10.1.tar.gz。

所需的系統相關包:

系統必須要安裝e2fsprogs-libs,不然後面ext3grep的安裝會出現問題。

下面進入編譯安裝階段,過程如下:

<code></code>

這樣,ext3grep就安裝完成了,預設的ext3grep指令放在/usr/local/bin目錄下。ext3grep的使用非常簡單,這裡不做介紹,可以通過“ext3grep  --help”擷取詳細的使用幫助。

三、通過ext3grep恢複誤删除的檔案與目錄

1、資料恢複準則

當發現某個分區的資料被誤删除後,要做的第一件事是立刻解除安裝被誤删除檔案所在的分區,或者重新以隻讀方式挂載此分區。

這麼做的原因其實很簡單:删除一個檔案,就是中檔案inode節點中的扇區指針清除,同時,釋放這些資料對應的資料塊,而真實的檔案還存留在磁盤分區中,但是這些被删除的檔案不一定會一直存留在磁盤中,當這些釋放的資料塊被作業系統重新配置設定時,那些被删除的資料就會被覆寫,是以,在資料誤删除後,馬上解除安裝檔案所在分區可以降低資料塊中資料被覆寫的風險,進而提高成功恢複資料的機率。

2、實戰ext3grep恢複檔案

(1).模拟資料誤删除環境

下面通過一個模拟環境,詳細介紹利用ext3grep恢複資料檔案的過程。

執行該指令後,ext3grep就開始搜尋可以恢複的資料檔案資訊,輸出下圖所示。

ext3檔案系統反删除利器ext3grep應用實戰

“ext3grep  /mydata/disk1  --ls --inode 2”主要用于掃描目前檔案系統下所有檔案的資訊,包括存在的和已經删除的檔案,其中含有d辨別的就是已被删除的檔案,如果不記得被删除的檔案的名稱,可以通過這種方式來擷取要恢複的檔案的名稱。

通過下面的方式可以擷取檔案要恢複的路徑資訊。

(4).恢複單個檔案

如果要恢複被删除的某個檔案,通過下面方式即可。

由上面的輸出可知,被删除的檔案ext3grep.txt已經成功恢複。那麼恢複的資料放到哪裡了呢?在這段操作中,在/opt目錄下執行ext3grep指令,恢複的資料檔案就存放在/opt/ restored_files目錄下,也就是說ext3grep會在執行恢複指令的目前目錄下自動建立一個restored_files目錄,這個目錄專門用于存放恢複的資料。

下面是恢複指定目錄下的某個檔案的操作:

這裡要注意的是,“--restore-file”後面指定的是恢複檔案路徑,這個路徑應該是檔案的相對路徑,這裡的相對路徑指的是相對指定裝置的路徑,比如,裝置/mydata/disk1的挂載點是/disk,而ext3grep.txt檔案就在/disk目錄下,是以直接指定檔案名就可以了。如果要恢複/disk/ext3grep/hosts檔案,那麼指定的參數應該是“ext3grep/hosts”,也就是上面代碼中所指定的形式。

通過“--restore-inode”參數,隻需指定檔案對應的inode值即可恢複檔案,操作如下,其中inode值為12的是profile檔案:

下面是進入restored_files目錄,驗證檔案是否成功恢複:

根據校驗結果可知,這個校驗碼與檔案被删除之前的校驗碼完全一緻,是以,通過這個方式恢複出來的檔案是完整的。

(5).恢複所有已删除資料

當需要恢複的檔案較少時,通過前面介紹的指定檔案的方式進行逐個恢複是可行的,但是如果要恢複很多個檔案,如1000個以上,還采取逐個指定的方式,效率是非常低下的,此時就要利用ext3grep指令的“--restore-all”參數了,具體操作如下:

根據這個輸出可知,“--restore-all”參數将指定儲存設備中可以恢複的檔案都恢複出來并放到了restored_files目錄中。“--restore-all”參數對恢複大量資料檔案是非常有用的。

本文出自 “技術成就夢想” 部落格,請務必保留此出處http://ixdba.blog.51cto.com/2895551/1571334

繼續閱讀