Linux下高效數(shù)據(jù)恢復軟件extundelete應(yīng)用實戰(zhàn)
[root@cloud1 ~]# mkdir /data/test
[root@cloud1 ~]# echo extundelete test > /data/test/mytest.txt
[root@cloud1 ~]#cd /data
[root@cloud1 data]# md5sum passwd
0715baf8f17a6c51be63b1c5c0fbe8c5 passwd
[root@cloud1 data]# md5sum test/mytest.txt
eb42e4b3f953ce00e78e11bf50652a80 test/mytest.txt
[root@cloud1 data]# rm -rf /data/*
2.卸載磁盤分區(qū)
在將數(shù)據(jù)誤刪除后,立刻需要做的就是卸載這塊磁盤分區(qū):
[root@cloud1 data]#cd /mnt
[root@cloud1 mnt]# umount /data
3.查詢可恢復的數(shù)據(jù)信息
通過extundelete命令可以查詢/dev/sdc1分區(qū)可恢復的數(shù)據(jù)信息:
[root@cloud1 /]# extundelete /dev/sdc1 --inode 2
......
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11 Deleted
passwd 49153 Deleted
test 425985 Deleted
ganglia-3.4.0 245761 Deleted
根據(jù)上面的輸出,標記為Deleted狀態(tài)的是已經(jīng)刪除的文件或目錄。同時還可以看到每個已刪除文件的inode值,接下來就可以恢復文件了。
4.恢復單個文件
執(zhí)行如下命令開始恢復文件:
[root@cloud1 /]# extundelete /dev/sdc1 --restore-file passwd
Loading filesystem metadata ... 40 groups loaded.
Loading journal descriptors ... 54 descriptors loaded.
Successfully restored file passwd
[root@cloud1 /]# cd RECOVERED_FILES/
[root@cloud1 RECOVERED_FILES]# ls
passwd
[root@cloud1 RECOVERED_FILES]# md5sum passwd
0715baf8f17a6c51be63b1c5c0fbe8c5 passwd
extundelete恢復單個文件的參數(shù)是“--restore-file”,這里需要注意的是,“--restore-file”后面指定的是恢復文件路徑,這個路徑是文件的相對路徑。相對路徑是相對于原來文件的存儲路徑而言的,比如,原來文件的存儲路徑是/data/passwd,那么在參數(shù)后面直接指定passwd文件即可,如果原來文件的存儲路徑是/data/test/mytest.txt,那么在參數(shù)后面通過“test/mytest.txt”指定即可。
在文件恢復成功后,extundelete命令默認會在執(zhí)行命令的當前目錄下創(chuàng)建一個RECOVERED_FILES目錄,此目錄用于存放恢復出來的文件,所以執(zhí)行extundelete命令的當前目錄必須是可寫的。
根據(jù)上面的輸出,通過md5sum命令校驗,校驗碼與之前的完全一致,表明文件恢復成功。
6.2通過extundelete恢復單個目錄
extundelete除了支持恢復單個文件,也支持恢復單個目錄,在需要恢復目錄時,通過 “--restore-directory”選項即可恢復指定目錄的所有數(shù)據(jù)。
繼續(xù)在上面模擬的誤刪除數(shù)據(jù)環(huán)境下操作,現(xiàn)在要恢復/data目錄下的ganglia-3.4.0文件夾,操作如下:
[root@cloud1 mnt]# extundelete /dev/sdc1 --restore-directory /ganglia-3.4.0
Loading filesystem metadata ... 40 groups loaded.
Loading journal descriptors ... 247 descriptors loaded.
Searching for recoverable inodes in directory /ganglia-3.4.0 ...
781 recoverable inodes found.
Looking through the directory structure for deleted files ...
4 recoverable inodes still lost.
[root@cloud1 mnt]# ls
RECOVERED_FILES
[root@cloud1 mnt]# cd RECOVERED_FILES/
[root@cloud1 RECOVERED_FILES]# ls
ganglia-3.4.0
可以看到之前刪除的目錄ganglia-3.4.0已經(jīng)成功恢復了,進入這個目錄檢查發(fā)現(xiàn):所有文件內(nèi)容和大小都正常。
6.3 通過extundelete恢復所有誤刪除數(shù)據(jù)
當需要恢復的數(shù)據(jù)較多時,一個個地指定文件或目錄將是一個非常繁重和耗時的工作,不過,extundelete考慮到了這點,此時可以通過“--restore-all”選項來恢復所有被刪除的文件或文件夾。
仍然在上面模擬的誤刪除數(shù)據(jù)環(huán)境下操作,現(xiàn)在要恢復/data目錄下所有數(shù)據(jù),操作過程如下:
[root@cloud1 mnt]# extundelete /dev/sdc1 --restore-all
Loading filesystem metadata ... 40 groups loaded.
Loading journal descriptors ... 247 descriptors loaded.
Searching for recoverable inodes in directory / ...
781 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[root@cloud1 mnt]# ls
RECOVERED_FILES
[root@cloud1 mnt]# cd RECOVERED_FILES/
[root@cloud1 RECOVERED_FILES]# ls
ganglia-3.4.0 passwd test
[root@cloud1 RECOVERED_FILES]# du -sh /mnt/RECOVERED_FILES/*
15M /mnt/RECOVERED_FILES/ganglia-3.4.0
4.0K /mnt/RECOVERED_FILES/passwd
8.0K /mnt/RECOVERED_FILES/test
可以看到所有數(shù)據(jù)全部完整地恢復了。
6.4通過extundelete恢復某個時間段的數(shù)據(jù)
有時候刪除了大量的數(shù)據(jù)量,其中很多數(shù)據(jù)都是沒用的,我們僅需要恢復其中的一部分數(shù)據(jù),此時,如果采用恢復全部數(shù)據(jù)的辦法,不但耗時,而且浪費資源,在這種情況下,就需要采用另外的一種恢復機制有選擇地恢復,extundelete提供了“—after”“和”--before“參數(shù),可以通過指定某個時間段,進而只恢復這個時間段內(nèi)的數(shù)據(jù)。
下面通過一個簡單示例,描述下如何恢復某個時間段內(nèi)的數(shù)據(jù)。
我們首先假定在/data目錄下有個剛剛創(chuàng)建的壓縮文件ganglia-3.4.0.tar.gz,然后刪除此文件,接著卸載/data分區(qū),開始恢復一小時內(nèi)的文件,操作如下:
[root@cloud1 ~]#cd /data/
[root@cloud1 data]# cp /app/ganglia-3.4.0.tar.gz /data
評論