在誤刪了數據咱們立馬要作的操做:不要作任何寫入操做,不要作任何保存操做,把所刪數據所在的盤卸載(umount),而後以只讀方式掛載(mount -o ro),或者是直接用mount -o remount,ro從新掛載。若是提示「device is busy"類的信息,能夠用fuser -k -i /mount_point來殺死全部正在使用這個盤的進程(-i是交互模式,會提示)。由於如今系統自動分區的話通常是隻把一個分區掛在/目錄下,無法再從新掛載,因此要果斷關機, 把硬盤掛在另外一個linux系統上進行恢復數據操做。node
本例實研環境centos 6.5,要恢復的數據是裝unbuntu系統的硬盤的/home/lei下的文件和目錄linux
extundelete能夠從ext3和ext4文件系統恢復數據的linux工具
最新版本爲0.2.4,從extundelete.sourceforge.net下載
爲了支持ext4系統,它依賴e2fsprogs-devel開發包1.41以上版本
(e2fsprogs(也叫作e2fs programs)是一個Ext2(及Ext3/4)文件系統工具集(Ext2 Filesystems Utilities[),它包含了諸如建立、修復、配置、調試ext2文件系統等的標準工具。在不一樣的linux發行版上它的名字不一樣)c++
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 下載extundelete
yum list e2fsprogs-devel 版本爲1.41.12-18.el6 正好知足須要
yum install e2fsprogs-devel 安裝 (它依賴同版本號的libcom_err-devel)
tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure 而後報錯了,提示讓查看config.log,實上不用看,沒有安裝gcc-c++或者gnu make
yum list gcc-c++ make 顯示make 已安裝,gcc-c++沒有
yum install gcc-c++ 它的依賴文件有一大堆,幸好有yum
./configure 生成Makefile文件
make 編譯 (這裏提示了一個警告warning: unused parameter "flags",應該沒有太大問題)
make install 安裝
extundelete -v 顯示了版本信息,安裝成功ubuntu
(掛載別的硬盤的邏輯卷具體要作的操做些處省略)
mount -o ro /dev/lei-pc/root /mnt # /dev/lei-pc/root是要恢復數據的ubuntu系統的根分區
-o ro 以只讀模式掛載centos
extundelete /dev/lei-pc/root --restore-directory /mnt/home/lei工具
# extundelete [要恢復的設備文件] --restore-directory [要恢復的目錄或文件]
但惋惜的是出錯了,錯誤信息以下
NOTICE: Extended attributes are not restored.
Loading filesystem metadata … 75 groups loaded.
Loading journal descriptors … 29398 descriptors loaded.
Failed to restore file /mnt/home/lei
Could not find correct inode number past inode 287274.
Try altering the filename to one of the entries listed below.
File name | Inode number | Deleted status
extundelete: Operation not permitted while restoring directory.
extundelete: Operation not permitted when trying to examine filesystem測試
再試,不指定具體目錄,用--restore-all 恢復全部能恢復的文件
extundelete /dev/lei-pc/root --restore-all
不像上次那樣有不少屏幕輸出,有但願哦
ls
看到了RECOVERED_FILES,說不定成功了,趕忙進去看看,發如今裏邊有不少安裝日誌之類的文本文件,也有home/lei目錄,但是進去沒有發如今被我刪除的文件。從新試了幾回,依然是這樣。
恢復失敗了。.net
進入ubuntu系統,從網上下了三張圖片,防在桌面上的testonemore文件夾裏。而後打開終端輸入
rm -rf Desktop/testonemore
sudo mount -o remount,ro /dev/lei-pc/root 想要以只讀模式掛載根分區,但提示/「 is busy「」,失敗了
sudo poweroff
再次把盤掛在centos下,啓動centos
此次我沒有把/dev/lei-pc/root掛載到/mnt目錄下而是直接開始恢復
extundelete /dev/lei-pc/root --restore-all
cd RECOVERED_FILES 裏邊依然有不少日誌類文件,但找到了home/lei/Desktop目錄,裏邊有一個名爲「Untitled Folder」的文件夾,進去一看是我放的那三張圖片。也許此次真的成功了調試
我有一樣的三張圖片放在/root/testonemore文件夾裏,用md5sum看看是否是同樣的
md5sum /root/testonemore/pic1.jpg 看到了原文件的md5值
md5sum pic1.jpg 輸出的md5值和原文件同樣,這些真的恢復成功了。rest
第一次之因此不成功,是多是由於我在關機的時候依然有一些保存操做,致使數據被覆蓋了,而第二次文件夾名改變也應該是一樣的緣由,文件名和牽引節點號錯位了,不過運氣比較好,問題不大。從此次能夠看出,不是誤刪以後當即中止操做就必定能恢復數據,對於硬盤只有一個根分區的系統來講,能不能恢復數據,真的要看運氣。