ext4分區中恢復被刪除的文件

作者:清林,博客名:飛空靜渡

今天在測試我剛完成的在linux對NTFS分區進行備份和恢復的代碼,運行程序備份一個200M的NTFS分區,然後在運行另一個程序恢復數據到這個200M的分區中,然後把這個分區加載到/tmp/sdd1中查看,文件恢復成功 --- 欣喜啊,做了幾個星期,終於可以舒一口氣了!

因此,想進一步測試一下,所以想把/tmp/sdd1中的內容刪除,然後再恢復一次,看是否可以恢復整個分區的數據!因此手快快的運行了rm *。然後發現有個目錄沒刪除,我想“不對啊!我沒拷貝目錄到這個NTFS分區啊”,然後看一下目錄路徑,自己的項目路徑,因爲我是在這個目錄下加載/dev/sdd1 到/tmp/sdd1中的,並沒有切換目錄。這時心的都涼了!做了那麼久的項目,那麼多的代碼文件,說沒就沒了 :( --- 欲哭無淚啊!

由於項目還沒建svn代碼庫,因此所有代碼都是在我機子本地,也沒有一個備份,天!這麼辛苦到底是爲什麼,而且還會影響到項目進度啊。

搞了那麼久的windows下的文件系統的數據備份和恢復,而且還打算寫一個NTFS分區的文件恢復軟件,而現在呢,居然載在linux下的文件系統中,悲哀!

馬上上網查找一下ext4分區的文件恢復!

找到了兩個,一個是photorec,另一個是extundelete。

下面是我的文件恢復歷程!

photorec恢復的數據非常凌亂,而且不準確,下面主要說明如何用extundelete來恢復我的數據!

下載的extundelete的源代碼(網址:http://extundelete.sourceforge.net/)

這裏強調一下,不要把代碼下載到你要恢復的分區中,你要恢復文件的分區不要做任何的數據讀寫操作!

因此,我把extundelete下載到/tmp目錄下,然後解壓,編譯!

在編譯之前,需要安裝兩個庫,一個是e2fsprogs,另一個是e2fslibs。

sudo apt-get install e2fsprogs e2fslibs-dev

這就是在ubuntu10.04下安裝的。

然後就是到它的源代碼目錄src下運行make進行編譯,最後生成extundelete可執行文件。

然後我就運行

sudo ./extundelete /dev/sda9 --restore-all

這裏建議恢復所有的被刪除的文件,下面會說明。

在程序結束後,會在程序的目錄下生成一個目錄RECOVERED_FILES

這個目錄下就是所有被刪除的文件,然後你就可以在下面找到你的被刪除的目錄及文件,但是我有很多文件還是找不到,好在我要找的文件是文本文件,因此,我就藉助了grep命令來查找。

cd RECOVERED_FILES

到這個目錄下,然後根據你的程序文件裏的內容,比如說我要找我的PartNtfs類,因爲這個文件找不到,因此我這樣

grep -rHn "PartNtfs" *

根據輸出內容,我找到了這個文件

fjb/.mozilla/firefox/omhuxrnc.default/Cache/CF72B08Ed01

用vim打開這個文件,果然是我需要的文件,因此把它拷貝出來並重命名。

所以在上面說一定要恢復所有被刪除的文件,因爲extundelete有可能會把恢復的文件改名,並放到其它目錄中。

這裏用grep來查找還是因此有些恢復的文件變成了隱藏文件,並且恢復的文件非常多,一個一個打開測試會非常麻煩,所以用grep來查找就快的多了。

最後,我很幸運,把整個工程的源代碼文件成功恢復了,並重新編譯 --- 成功!

這裏如果extundelete沒完全恢復你的文件數據,你可以再借助一下photorec和grep命令來恢復,photorec可以找回部分數據,但有些數據會比較凌亂,需要你去拼湊!photorec在testdisk中,你只需安裝testdisk就會安裝了photorec。

哎,雖然做了那麼就的數據備份和恢復的軟件,一不小心,也會載在這裏,所以奉勸各位,一定要小心自己的數據保護和備份自己重要的數據,畢竟硬盤有價,數據無價啊!

原文地址:http://blog.csdn.net/fjb2080
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章