1》概述 作為一名運維人員,保證數據的安全是根本職責,所以在維護系統的時候,要慎重和細心,但是有時也難免發生出現數據被誤刪除的情況,這個時候該如何 快速、有效地恢複數據呢? 1>如何使用rm –rf命令 在Linux系統下,通過 rm –rf 可以將任何數據直接從硬碟刪除,並且沒有任何提示,同時Li ...
1》概述
作為一名運維人員,保證數據的安全是根本職責,所以在維護系統的時候,要慎重和細心,但是有時也難免發生出現數據被誤刪除的情況,這個時候該如何 快速、有效地恢複數據呢?
1>如何使用rm –rf命令
在Linux系統下,通過 rm –rf 可以將任何數據直接從硬碟刪除,並且沒有任何提示,同時Linux下也沒有與Windows下回收站的功能,也就意味著數據 在刪除後通過常規的手段是無法恢復的,因此使用這個命令要非常慎重,在使用rm命令的的時候,比較穩妥的方法就是命令參數放到後面,這樣有一個提 醒作用, 那麼在企業當中其實保證數據最安全的方法就是做好備份,雖然備份不是萬能的,但是沒有備份是萬萬不行的,任何數據工具都有一定的局限 性,都不能保證完整的恢復出所有的數據,因此,把備份作為核心,把數據恢復工具作用輔助是運維必須堅持的一種準則;
2>extundelete和ext3grep的異同
在Linux 下,基於開源的數據恢復工具有很多,常見的有debugfs,R-Linux,ext3grep,extundelete等,比較常用的有ext3grep和extundelete,這兩個 工具的恢復基本一樣,只是exturndelete功能更加強大;
exturndelete 是基於Linux的一個數據恢復工具,它通過分析文件系統的日誌,解析出所有文件的inode的信息,從而可以恢復Linux下主流的ext3 ext4 文件系統被下被誤刪除的文件,而ext3grep緊緊只能恢復ext3文件系統的恢復,在恢復速度上,extundelete要快很多,因為extundelete恢復機制是掃描 inode和恢複數據同時進行,並且支持耽擱文件恢復,但各目錄恢復、inode恢復、block恢復,完整磁碟恢復等,而ext3grep就略顯不足了,它需要首先掃 描完要恢複數據的所有inode信息,然後才開始恢複數據,所以在恢復速度上相對來說比較慢,並且在功能上也不支持目錄恢復、時間恢復等;
3>extundelete恢復的原理
在介紹使用extundelete 進行恢複數據之前,簡單的介紹一下inode的知識,在Linux下可以通過”ls -id”命令查詢某個文件或者目錄的inode值,例如查看目 錄的inode值,可以輸入: ls –id / 查看根目錄的inode值,由此可知,根目錄的inode值為2,在利用extundelete恢覆文件時並不依賴特定文件格式,首先 extundelete會通過文件系統的inode信息,來獲得當前文件系統下的所有文件信息,包括存在和已經刪除的文件,這些信息包括文件名和inode,然後利用 inode信息結合去查詢該inode所在的block的位置,包括直接塊,間接塊等信息,最後利用dd命令將這些信息備份出來,從而恢複數據文件;
2》extundelete的使用
1>安裝extundelete
extundelete 官方地址為http://extundelete.sourceforge.net/ 其目前穩定版本是extundelete-0.2.4.tar.bz2 ,
在安裝extundelelete之前需要安裝e2fsprogs和e2fsprogs-libs兩個一依賴包,e2fsprogs和e2fsprogs-libs安裝非常簡單,
安裝依賴包:
# yum -y install e2fsprogs e2fsprogs-libs e2fslibs-dev e2fslibs-dev e2fsprogs-devel
網上YUM或者官方預設YUM 直接 yum install e2fsprogs* 就可以了。
# tar -xvf extundelete-0.2.4.tar.bz2
#cd extundelete-0.2.4
# ./configure && make && make install
出現警告的,可以忽略。
2>extundelelte恢復單個文件
多增加一塊硬碟/dev/sdb 分區為/dev/sdb1
# mkdir /datazeng
# mount /dev/sdb1 /datazeng
# vim /datazeng/1.txt
# cp /etc/passwd /datazeng
# cp –rf /boot/grub/ /datazeng/
# sync;sync;sync; 註意創建文件或者複製文件會首先在記憶體標記,sync時數據落地到磁碟,否則將恢復失敗,
# rm /datazeng/* -rf 開始刪除數據
# umount /dev/sdb1 在刪除刪除後,立即需要將這個分區卸載,
這一步很重要,並且在誤刪除文件後應儘快將磁碟掛載為只讀;越早進行,恢復的成功機率就越大;
# extundelete /dev/sdb1 --inode 2 開始查詢/dev/sdb1可恢復的數據
# extundelete /dev/sdb1 --restore-file passwd 開始恢復單個數據,
使用—resotre-file參數
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 64 groups loaded.
Loading journal descriptors ... 37 descriptors loaded.
Successfully restored file passwd
[root@master /]# ls RECOVERED_FILES/
passwd
extundelete恢復單個文件的參數是”—restore-file”,這裡需要註意是的”—restore-file”後面指定的是恢覆文件路徑,這個路徑是文件的相對路徑,相對 路徑是相對於原來文件存儲路徑而言,比如:
原來的文件存儲路徑是/datazeng/passwd ,那麼恢復的時候不需要加絕對路徑。直接加相對路徑即可;
原來文件存儲的路徑是/datazeng/test/1.txt 那麼恢復的時候直接在參數後面加test/1.txt 即可;
在文件恢覆成功後,extundelete命令預設在執行命令的目錄下創建一個RECOVERED_FILES的目錄,此目錄用於存放恢復的文件,所以執行extundelete 命令當前目錄必須是可寫的;
3>extundelelte恢復單個目錄
[root@master /]# extundelete /dev/sdb1 --restore-directory /grub
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 64 groups loaded.
Loading journal descriptors ... 65 descriptors loaded.
Searching for recoverable inodes in directory /grub ...
20 recoverable inodes found.
Looking through the directory structure for deleted files ...
5 recoverable inodes still lost.
[root@master /]# ls RECOVERED_FILES/
grub
4>extundelelte恢復所有誤刪除 數據
[root@master /]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 64 groups loaded.
Loading journal descriptors ... 65 descriptors loaded.
Searching for recoverable inodes in directory / ...
20 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[root@master /]# ls RECOVERED_FILES/
grub passwd
5>extundelelte恢復某個時間的
after 恢復某時間之後的被刪除的數據, before恢復某時間段之前被刪除的數據
[root@master /]# date +%s
1409111629
# extundelete --before 1409111629 --restore-all /dev/sdb1
錯誤:小提示每次做測試了,有點人為了方便,在測試完成之後, mkfs.ext4 /dev/sdb1 再重新掛載,寫入數據後,再刪除,卸載,再測試;
如果一個分區被2次格式化後,在往裡面填充數據後,自己手動建立的數據將不可恢復,只能通過別的地方CP複製過來的數據才可以恢復,想 要重新測試;請把虛擬機新增加的硬碟移除掉,在重新增加,進行分區,測試;
註意此軟體還有很多BUG存在,特別對一些大文件恢復。還有很大缺陷。並且不能保證100%的恢復 ,所以只能救火使用;