原文鏈接:http://blog.s135.com/linux_ext3_undelete/]
環境:CentOS 5.3 x86_64下,/dev/sdb1爲數據分區/data0,EXT3文件系統。
前因:誤刪了/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件。由於忘了備份httpcws.cpp文件,重新開發工作量較大,因此只有恢復該文件一條路可走。
debugfs命令針對EXT2分區還行,但對EXT3分區就幫不上忙了。偶然發現的一款開源軟件,解決了我的大忙。該軟件下載網址爲:
http://code.google.com/p/ext3grep/
1、先安裝ext3grep軟件:
wget http://ext3grep.googlecode.com/files/ext3grep-0.10.1.tar.gz
tar zxvf ext3grep-0.10.1.tar.gz
cd ext3grep-0.10.1
./configure
make
make install
tar zxvf ext3grep-0.10.1.tar.gz
cd ext3grep-0.10.1
./configure
make
make install
2、umount /data0分區:
umount /data0
如果提示busy,先kill正在使用這個目錄的進程,再umount:
fuser -k /data0
umount /data0
umount /data0
3、查詢所有Inode,(執行需要幾分鐘~十多分鐘):
ext3grep /dev/sdb1 --ls --inode 2
4、逐級查找Inode,看是否能找到httpcws.cpp文件(此步驟也可省略):
5、恢復/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件:
ext3grep /dev/sdb1 --restore-file tcsql/cankao/phpcws-1.5.0/httpcws.cpp
如果提示以下信息,則表示恢復成功:
Restoring tcsql/cankao/phpcws-1.5.0/httpcws.cpp
這時,執行ext3grep命令的當前目錄下將會自動生成一個名爲RESTORED_FILES的文件夾,文件夾下的tcsql/cankao/phpcws-1.5.0/httpcws.cpp即爲恢復的文件。查看了一下,和被刪除前的內容一樣,大功告成。
6、重新mount /data0分區:
mount /dev/sdb1 /data0
參考資料:http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html