Linux下高效數(shù)據(jù)恢復(fù)軟件extundelete應(yīng)用實戰(zhàn)
作為一名運維人員,保證數(shù)據(jù)的安全是根本職責(zé),所以在維護系統(tǒng)的時候,要慎之又慎,但是有時難免會出現(xiàn)數(shù)據(jù)被誤刪除的情況,在這個時候改如何快速、有效地恢復(fù)數(shù)據(jù)呢?本文我們就來介紹一下Linux系統(tǒng)下常用的幾個數(shù)據(jù)恢復(fù)工具。
本文引用地址:http://www.ex-cimer.com/article/201609/304179.htm一、如何使用“rm -rf”命令
在Linux系統(tǒng)下,通過命令“rm -rf”可以將任何數(shù)據(jù)直接從硬盤刪除,并且沒有任何提示,同時Linux下也沒有與Windows下回收站類似的功能,也就意味著,數(shù)據(jù)在刪除后通過常規(guī)的手段是無法恢復(fù)的,因此使用這個命令要非常慎重。在使用rm命令的時候,比較穩(wěn)妥的方法是把命令參數(shù)放到后面,這樣有一個提醒的作用。其實還有一個方法,那就是將要刪除的東西通過mv命令移動到系統(tǒng)下的/tmp目錄下,然后寫個腳本定期執(zhí)行清除操作,這樣做可以在一定程度上降低誤刪除數(shù)據(jù)的危險性。
其實保證數(shù)據(jù)安全最好的方法是做好備份,雖然備份不是萬能的,但是沒有備份是萬萬不行的。任何數(shù)據(jù)恢復(fù)工具都有一定局限性,都不能保證完整地恢復(fù)出所有數(shù)據(jù),因此,把備份作為核心,把數(shù)據(jù)恢復(fù)工具作為輔助是運維人員必須堅持的一個準則。
二、extundelete與ext3grep的異同
在Linux下,基于開源的數(shù)據(jù)恢復(fù)工具有很多,常見的有debugfs、R-Linux、ext3grep、extundelete等,比較常用的有ext3grep和extundelete,這兩個工具的恢復(fù)原理基本一樣,只是extundelete功能更加強大,本文重點介紹extundelete的使用。
三、extundelete的恢復(fù)原理
在介紹使用extundelete進行恢復(fù)數(shù)據(jù)之前,簡單介紹下關(guān)于inode的知識。在Linux下可以通過“ls –id”命令來查看某個文件或者目錄的inode值,例如查看根目錄的inode值,可以輸入:
[root@cloud1 ~]# ls -id /
2 /
由此可知,根目錄的inode值為2。
在利用extundelete恢復(fù)文件時并不依賴特定文件格式,首先extundelete會通過文件系統(tǒng)的inode信息(根目錄的inode一般為2)來獲得當(dāng)前文件系統(tǒng)下所有文件的信息,包括存在的和已經(jīng)刪除的文件,這些信息包括文件名和inode。然后利用inode信息結(jié)合日志去查詢該inode所在的block位置,包括直接塊,間接塊等信息。最后利用dd命令將這些信息備份出來,從而恢復(fù)數(shù)據(jù)文件。
四、 安裝extundelete
extundelete的官方網(wǎng)站是http://extundelete.sourceforge.net/ ,其目前的穩(wěn)定版本是extundelete-0.2.4。,在安裝extundelete之前需要安裝e2fsprogs和e2fsprogs-libs兩個依賴包。
e2fsprogs和e2fsprogs-libs安裝非常簡單,這里不做介紹。下面是extundelete的編譯安裝過程:
[root@cloud1 app]#tar jxvf extundelete-0.2.4.tar.bz2
[root@cloud1 app]#cd extundelete-0.2.4
[root@cloud1 extundelete-0.2.4]#./configure
[root@cloud1 extundelete-0.2.4]#make
[root@cloud1 extundelete-0.2.4]#make install
成功安裝extundelete后,會在系統(tǒng)中生成一個extundelete可執(zhí)行文件。extundelete的使用非常簡單,讀者可以通過“extundelete --help”獲得此軟件的使用方法。
五、extundelete用法詳解
extundelete安裝完成后,就可以執(zhí)行數(shù)據(jù)恢復(fù)操作了,本節(jié)詳細介紹下extundelete每個參數(shù)的含義。extundelete用法如下:
extundelete --help
命令格式:
1
extundelete [options] [action] device-file
其中參數(shù)(options)有:
--version, -[vV],顯示軟件版本號。
--help,顯示軟件幫助信息。
--superblock,顯示超級塊信息。
--journal,顯示日志信息。
--after dtime,時間參數(shù),表示在某段時間之后被刪的文件或目錄。
--before dtime,時間參數(shù),表示在某段時間之前被刪的文件或目錄。
動作(action)有:
--inode ino,顯示節(jié)點“ino”的信息。
--block blk,顯示數(shù)據(jù)塊“blk”的信息。
--restore-inode ino[,ino,...],恢復(fù)命令參數(shù),表示恢復(fù)節(jié)點“ino”的文件,恢復(fù)的文件會自動放在當(dāng)前目錄下的RESTORED_FILES文件夾中,使用節(jié)點編號作為擴展名。
--restore-file 'path',恢復(fù)命令參數(shù),表示將恢復(fù)指定路徑的文件,并把恢復(fù)的文件放在當(dāng)前目錄下的RECOVERED_FILES目錄中。
--restore-files 'path',恢復(fù)命令參數(shù),表示將恢復(fù)在路徑中已列出的所有文件。
--restore-all,恢復(fù)命令參數(shù),表示將嘗試恢復(fù)所有目錄和文件。
-j journal,表示從已經(jīng)命名的文件中讀取擴展日志。
-b blocknumber,表示使用之前備份的超級塊來打開文件系統(tǒng),一般用于查看現(xiàn)有超級塊是不是當(dāng)前所要的文件。
-B blocksize,表示使用數(shù)據(jù)塊大小來打開文件系統(tǒng),一般用于查看已經(jīng)知道大小的文件。
六、實戰(zhàn):extundelete恢復(fù)數(shù)據(jù)的過程
在數(shù)據(jù)被誤刪除后,第一時間要做的是卸載被刪除數(shù)據(jù)所在的磁盤或磁盤分區(qū),如果是系統(tǒng)根分區(qū)的數(shù)據(jù)遭到誤刪除,就需要將系統(tǒng)進入單用戶,并且將根分區(qū)以只讀模式掛載。這樣做的原因很簡單,因為將文件刪除后,僅僅是將文件的inode結(jié)點中的扇區(qū)指針清零,實際文件還存儲在磁盤上,如果磁盤以讀寫模式掛載,這些已刪除的文件的數(shù)據(jù)塊就可能被操作系統(tǒng)重新分配出去,在這些數(shù)據(jù)塊被新的數(shù)據(jù)覆蓋后,這些數(shù)據(jù)就真的丟失了,恢復(fù)工具也回力無天。所以,以只讀模式掛載磁盤可以盡量降低數(shù)據(jù)塊中數(shù)據(jù)被覆蓋的風(fēng)險,以提高恢復(fù)數(shù)據(jù)成功的比率。
6.1通過extundelete恢復(fù)單個文件
1.模擬數(shù)據(jù)誤刪除環(huán)境
在演示通過extundelete恢復(fù)數(shù)據(jù)之前,我們首先要模擬一個數(shù)據(jù)誤刪除環(huán)境,這里我們以ext3文件系統(tǒng)為例,在ext4文件系統(tǒng)下的恢復(fù)方式與此完全一樣。簡單的模擬操作過程如下:
[root@cloud1 ~]#mkdir /data
[root@cloud1 ~]#mkfs.ext3 /dev/sdc1
[root@cloud1 ~]#mount /dev/sdc1 /data
[root@cloud1 ~]# cp /etc/passwd /data
[root@cloud1 ~]# cp -r /app/ganglia-3.4.0 /data
評論