人無完人,工作環境中,我們難免會存在誤操作(如:rm -rf)。接下來,我們來模擬一個誤刪除操作(rm
-rf),然後利用ext3grep取回被誤刪的數據。
ext3grep官方網站:http://code.google.com/p/ext3grep/
這裏下載的是ext3grep-0.10.2.tar.gz
所需要的系統相關包:
[root@localhost ~]# rpm -qa | grep e2fsprogs
e2fsprogs-1.39-33.el5
e2fsprogs-libs-1.39-33.el5
e2fsprogs-libs-1.39-33.el5
e2fsprogs-devel-1.39-33.el5
系統必須安裝e2fsprogs-libs,不然後面ext3grep的安裝會出現問題。
下面進入編譯安裝階段,過程如下:
[root@localhost software]# tar xvf
ext3grep-0.10.2.tar.gz
[root@localhost software]# cd ext3grep-0.10.2
[root@localhost ext3grep-0.10.2]#
./configure
[root@localhost ext3grep-0.10.2]# make
&& make install
[root@localhost ext3grep-0.10.2]# ext3grep -v
Running ext3grep version 0.10.2
ext3grep v0.10.2, Copyright (C) 2008 Carlo Wood.
ext3grep comes with ABSOLUTELY NO WARRANTY;
This program is free software; your freedom to use,
change
and distribute this program is protected by the
GPL.
這樣,ext3grep就安裝完成了,默認ext3grep命令放在/usr/local/bin目錄下。ext3grep的使用非常簡單,這裏就不做介紹,可以通過”ext3grep
--help“ 獲取詳細的使用幫助。
數據恢復準則:
當發現某個分區的數據被刪除以後,要做的第一件事就是立刻卸載被誤刪文件所在的分區,或者重新以只讀的方式掛載此分區。
這麼做的原因其實很簡單:刪除一個文件,就是將文件的Inode節點中的扇區指針清除,同時,釋放這些數據對應的數據塊,而真實的文件還存在磁盤分區中。
但是這些被刪除的文件不會一直存留在磁盤中,當這些釋放的數據塊被操作系統重新分配時,那些被刪除的數據就會被覆蓋。因此,在數據被誤刪除後,馬上卸載文
件所在分區可以降低數據塊中數據被覆蓋的風險,進而提高成功恢復數據的機率。
1,模擬數據誤刪除環境:
[root@localhost /]# mkdir mydata
[root@localhost /]# mkdir disk #建立一個掛載點
[root@localhost mydata]# dd if=/dev/zero of=/mydata/disk1
count=102400 #模擬磁盤分區,創建一個空設備
102400+0 records in
102400+0 records out
52428800 bytes (52 MB) copied, 0.334582 seconds, 157
MB/s
[root@localhost mydata]# mkfs.ext3 /mydata/disk1 #講空設備格式化爲ext3格式
[root@localhost ~]# mount -o loop /mydata/disk1
/disk/ #掛載設備到
/disk 目錄下
[root@localhost ~]# cd /disk/
[root@localhost disk]# cp /etc/profile /disk/
[root@localhost disk]# echo "ext3grep test" >
ext3grep.txt
[root@localhost disk]# mkdir ext3grep
[root@localhost disk]# cp /etc/hosts ext3grep/
[root@localhost disk]# ls -al
總計 25
drwxr-xr-x 4 root
root 1024 08-29 17:02
.
drwxr-xr-x 27 root root 4096
08-29 16:58 ..
drwxr-xr-x 2 root
root 1024 08-29 17:02
ext3grep
-rw-r--r-- 1 root
root 14 08-29 17:02
ext3grep.txt
drwx------ 2 root root 12288
08-29 17:00 lost+found
-rw-r--r-- 1 root
root 1345 08-29 17:01
profile
[root@localhost disk]# md5sum profile >
/tmp/md5.txt #獲取文件校驗碼(和恢復後的文件檢驗碼做對比,看數據是否改變)
[root@localhost disk]# md5sum ext3grep.txt
>>
/tmp/md5.txt
[root@localhost ~]# rm -rf /disk/* #模擬誤刪數據操作
2,卸載磁盤分區
[root@localhost ~]# umount /disk/
3,查詢恢復數據信息
[root@localhost ~]# ext3grep /mydata/disk1 --ls --inode
2
執行該命令後,ext3grep就開始搜索可以恢復的數據文件信息,輸出如下
..........
Inode 2 is directory "".
Directory block 433:
.-- File
type in dir_entry (r=regular file, d=directory,
l=symlink)
| .-- D:
Deleted ; R: Reallocated
Indx Next
| Inode | Deletion time Mode File
name
==========+==========+----------------data-from-inode------+-----------+=========
0 1 d 2 drwxr-xr-x .
1 end
d 2 drwxr-xr-x ..
2 3 d 11 D
1346231173 Wed Aug 29 17:06:13
2012 drwx------ lost+found
3 end
r 12 D
1346231173 Wed Aug 29 17:06:13
2012 rrw-r--r-- profile
4 end
r 13 D
1346231173 Wed Aug 29 17:06:13
2012 rrw-r--r-- ext3grep.txt
5 end
d 9161 D 1346231173 Wed Aug 29
17:06:13
2012 drwxr-xr-x ext3grep
"ext3grep /mydata/disk1 --ls --inode
2"主要用於掃描當前文件系統下所有文件的信息,包括存在的和已經刪除的文件,其中含有 D
標識的就是已經被刪除的文件,
如果不記得被刪除的文件的名稱,可以通過這種方式來獲取要恢復的數據文件名稱。通過下面的方式可以獲取文件要恢復的路徑信息。
[root@localhost ~]# ext3grep /mydata/disk1
--dump-names
Running ext3grep version 0.10.2
Number of groups: 7
Minimum / maximum journal block: 447 / 4561
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be
from 1346230883 = Wed Aug 29 17:01:23 2012
Number of descriptors in journal: 65; min / max sequence numbers: 2
/ 18
Loading disk1.ext3grep.stage2... done
ext3grep
ext3grep.txt
ext3grep/hosts
lost+found
profile
4,恢復單個文件
[root@localhost ~]# ext3grep /mydata/disk1 --restore-file
ext3grep.txt
Running ext3grep version 0.10.2
Number of groups: 7
Minimum / maximum journal block: 447 / 4561
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be
from 1346230883 = Wed Aug 29 17:01:23 2012
Number of descriptors in journal: 65; min / max sequence numbers: 2
/ 18
Loading disk1.ext3grep.stage2... done
Restoring ext3grep.txt
由上面的信息可知,被刪除的文件ext3grep.txt已經恢復成功。(在哪個目錄下執行ext3grep
命令,恢復的數據文件就在哪個目錄的RESTORED_FILES目錄下)
"--restore-file"
後面指定的恢復文件路徑,這個路徑應該是文件的相對路徑,這裏的相對路徑指的是相對指定設備的路徑,比如,設備
/mydata/disk1的掛載點是/disk,而ext3grep.txt文件就是在/disk目錄下,因此直接指定文件名就可以了,如果要恢復/disk/ext3grep/hosts
文件,那麼指定的參數應該是"ext3grep/hosts",如:
[root@localhost ~]# ext3grep /mydata/disk1 --restore-file
ext3grep/hosts
通過 "--restore-inode"
參數,只需要指定文件對應的Inode值即可恢復文件。操作如下(其中inode值爲12的是profile文件):
[root@localhost ~]# ext3grep /mydata/disk1 --restore-inode
12
接下來可進入當前目錄的RESTORED_FILES目錄,驗證文件是否成功恢復。
恢復所有已經刪除的數據文件可用 "--restore-all" 參數,如下:
[root@localhost ~]# ext3grep /mydata/disk1
--restore-all
Running ext3grep version 0.10.2
Number of groups: 7
Minimum / maximum journal block: 447 / 4561
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be
from 1346230883 = Wed Aug 29 17:01:23 2012
Number of descriptors in journal: 65; min / max sequence numbers: 2
/ 18
Loading disk1.ext3grep.stage2... done
Restoring ext3grep.txt
Restoring ext3grep/hosts
Restoring profile
"--restore-all"
參數將指定存儲設備中可以恢復的文件都恢復出來並保存到了RESTORED_FILES目錄中。"--restore-all"
參數對恢復大量數據文件是非常有用的。
rm -rf刪除文件的恢復
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.