一、背景
系統管理員,最謹慎的linux就是rm命令了,一不小心數據就沒干掉,最恐怖的是數據沒有備份,沒法還原了,此類事情發生的太多了,針對于此,我們經過多次嘗試演練,終于成功的把大部分刪除的數據找回來了,下面我把演練過程給大家介紹一下。
二、安裝恢復軟件
extundelete,該工具官方給出的是可以恢復ext3或者ext4文件系統被刪除的文件。
1:通過命令安裝
#yum install extundelete -y
2:通過源碼編譯安裝
#yum -y install e2fsprogs-devel e2fsprogs #wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2 #tar -xvjf extundelete-0.2.4.tar.bz2 #cd extundelete-0.2.4 #./configure #make &&make install
三、刪除數據查找
首先,我們先刪除一個文件,如圖:
如上圖,我們剛才在/boot目錄下刪除了個symvers-2.6.32-431.el6.x86_64.gz文件,/boot是落到/dev/sda1下
在Linux下可以通過“ls -id”命令來查看某個文件或者目錄的inode值,例如查看根目錄的inode值,可以輸入:
[root@cloud boot]# ls -id /boot 2 /boot
注:根目錄的inode一般為2
然后我們開始查找被刪除的文件,需要根據分區inode查找,命令如下:
#extundelete /dev/sda1 --inode 2
結果如下圖:
我們就可以看到標識為Deleted的被刪除數據了。
四、數據恢復
我們就開始恢復,命令如下:
#extundelete /dev/sda1 --restore-file symvers-2.6.32-431.el6.x86_64.gz
如圖:
還原成功
當然,還有可能刪除整個文件夾,我們也舉個例子,如下:
#extundelete /dev/sda1 --restore-directory test
恢復全部刪除數據,如下:
#extundelete /dev/sdb1 --restore-all
也可以通過時間段恢復,這里就不說了,參數如下:
--version, -[vV],顯示軟件版本號。 --help,顯示軟件幫助信息。 --superblock,顯示超級塊信息。 --journal,顯示日志信息。 --after dtime,時間參數,表示在某段時間之后被刪的文件或目錄。 --before dtime,時間參數,表示在某段時間之前被刪的文件或目錄。 動作(action)有: --inode ino,顯示節點“ino”的信息。 --block blk,顯示數據塊“blk”的信息。 --restore-inode ino[,ino,...],恢復命令參數,表示恢復節點“ino”的文件,恢復的文件會自動放在當前目錄下的RESTORED_FILES文件夾中,使用節點編號作為擴展名。 --restore-file 'path',恢復命令參數,表示將恢復指定路徑的文件,并把恢復的文件放在當前目錄下的RECOVERED_FILES目錄中。 --restore-files 'path',恢復命令參數,表示將恢復在路徑中已列出的所有文件。 --restore-all,恢復命令參數,表示將嘗試恢復所有目錄和文件。 -j journal,表示從已經命名的文件中讀取擴展日志。 -b blocknumber,表示使用之前備份的超級塊來打開文件系統,一般用于查看現有超級塊是不是當前所要的文件。 -B blocksize,通過指定數據塊大小來打開文件系統,一般用于查看已經知道大小的文件。
五、總結
數據恢復,不一定能全部將數據恢復回來,還是一句話,操作要謹慎。萬一操作失誤,也不要慌,將損失減少到最小,首先停止所有操作,其次讓專業人員去處理。