在誤刪了數據我們立馬要做的操作:不要做任何寫入操作,不要做任何保存操作,把所刪數據所在的盤卸載(umount),然后以只讀方式掛載(mount -o ro),或者是直接用mount -o remount,ro重新掛載。如果提示“device is busy"類的信息,可以用fuser -k -i /mount_point來殺死所有正在使用這個盤的進程(-i是交互模式,會提示)。因為現在系統自動分區的話一般是只把一個分區掛在/目錄下,沒法再重新掛載,所以要果斷關機, 把硬盤掛在另一個linux系統上進行恢復數據操作。
本例實研環境centos 6.5,要恢復的數據是裝unbuntu系統的硬盤的/home/lei下的文件和目錄
1、在centos 6.5上安裝extundelete。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發行版上它的名字不同)
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 下載extundeleteyum list e2fsprogs-devel 版本為1.41.12-18.el6 正好滿足需要yum install e2fsprogs-devel 安裝 (它依賴同版本號的libcom_err-devel)tar -jxvf extundelete-0.2.4.tar.bz2cd extundelete-0.2.4./configure 然后報錯了,提示讓查看config.log,實上不用看,沒有安裝gcc-c++或者gnu makeyum list gcc-c++ make 顯示make 已安裝,gcc-c++沒有yum install gcc-c++ 它的依賴文件有一大堆,幸虧有yum./configure 生成Makefile文件make 編譯 (這里提示了一個警告warning: unused parameter "flags",應該沒有太大問題)make install 安裝extundelete -v 顯示了版本信息,安裝成功
2、關機把要恢復數據的盤掛上系統。然后開機,做掛載操作。(掛載別的硬盤的邏輯卷具體要做的操作些處省略)mount -o ro /dev/lei-pc/root /mnt # /dev/lei-pc/root是要恢復數據的Ubuntu系統的根分區-o ro 以只讀模式掛載
3、開始恢復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/leiCould not find correct inode number past inode 287274.Try altering the filename to one of the entries listed below.File name | Inode number | Deleted statusextundelete: 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目錄,可是進去沒有發現在被我刪除的文件。重新試了幾次,依然是這樣。恢復失敗了。
4、心有不甘,再試進入ubuntu系統,從網上下了三張圖片,防在桌面上的testonemore文件夾里。然后打開終端輸入rm -rf Desktop/testonemoresudo 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-allcd RECOVERED_FILES 里邊依然有很多日志類文件,但找到了home/lei/Desktop目錄,里邊有一個名為“Untitled Folder”的文件夾,進去一看是我放的那三張圖片。也許這次真的成功了
5、測試數據是否已經損壞。我有同樣的三張圖片放在/root/testonemore文件夾里,用md5sum看看是不是一樣的md5sum /root/testonemore/pic1.jpg 看到了原文件的md5值md5sum pic1.jpg 輸出的md5值和原文件一樣,這些真的恢復成功了。
6、總結第一次之所以不成功,是可能是因為我在關機的時候依然有一些保存操作,導致數據被覆蓋了,而第二次文件夾名改變也應該是同樣的原因,文件名和牽引節點號錯位了,不過運氣比較好,問題不大。從這次可以看出,不是誤刪之后立即停止操作就一定能恢復數據,對于硬盤只有一個根分區的系統來說,能不能恢復數據,真的要看運氣。
新聞熱點
疑難解答