日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

extundelete应用实战

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 extundelete应用实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、如何使用“rm -rf”命令


在Linux系統下,通過命令“rm -rf”可以將任何數據直接從硬盤刪除,并且沒有任何提示,同時Linux下也沒有與Windows下回收站類似的功能,也就意味著,數據在刪除后通過常規的手段是無法恢復的,因此使用這個命令要非常慎重。在使用rm命令的時候,比較穩妥的方法是把命令參數放到后面,這樣有一個提醒的作用。其實還有一個方法,那就是將要刪除的東西通過mv命令移動到系統下的/tmp目錄下,然后寫個腳本定期執行清除操作,這樣做可以在一定程度上降低誤刪除數據的危險性。

其實保證數據安全最好的方法是做好備份,雖然備份不是萬能的,但是沒有備份是萬萬不行的。任何數據恢復工具都有一定局限性,都不能保證完整地恢復出所有數據,因此,把備份作為核心,把數據恢復工具作為輔助是運維人員必須堅持的一個準則。


二、extundelete與ext3grep的異同

在Linux下,基于開源的數據恢復工具有很多,常見的有debugfs、R-Linux、ext3grep、extundelete等,比較常用的有ext3grep和extundelete,這兩個工具的恢復原理基本一樣,只是extundelete功能更加強大,本文重點介紹extundelete的使用。


三、extundelete的恢復原理

在介紹使用extundelete進行恢復數據之前,簡單介紹下關于inode的知識。在Linux下可以通過“ls –id”命令來查看某個文件或者目錄的inode值,例如查看根目錄的inode值,可以輸入:

1 2 [root@cloud1?~]#?ls?-id??/? 2?/

由此可知,根目錄的inode值為2。

在利用extundelete恢復文件時并不依賴特定文件格式,首先extundelete會通過文件系統的inode信息(根目錄的inode一般為2)來獲得當前文件系統下所有文件的信息,包括存在的和已經刪除的文件,這些信息包括文件名和inode。然后利用inode信息結合日志去查詢該inode所在的block位置,包括直接塊,間接塊等信息。最后利用dd命令將這些信息備份出來,從而恢復數據文件。


四、 安裝extundelete

extundelete的官方網站是http://extundelete.sourceforge.net/ ,其目前的穩定版本是extundelete-0.2.4。,在安裝extundelete之前需要安裝e2fsprogs和e2fsprogs-libs兩個依賴包。

e2fsprogs和e2fsprogs-libs安裝非常簡單,這里不做介紹。下面是extundelete的編譯安裝過程:

1 2 3 4 5 [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后,會在系統中生成一個extundelete可執行文件。extundelete的使用非常簡單,讀者可以通過“extundelete ?--help”獲得此軟件的使用方法。?


五、extundelete用法詳解

extundelete安裝完成后,就可以執行數據恢復操作了,本節詳細介紹下extundelete每個參數的含義。extundelete用法如下:

extundelete --help

命令格式:?

1 extundelete?[options]?[action]?device-file

其中參數(options)有:

--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,表示使用數據塊大小來打開文件系統,一般用于查看已經知道大小的文件。


六、實戰:extundelete恢復數據的過程

在數據被誤刪除后,第一時間要做的是卸載被刪除數據所在的磁盤或磁盤分區,如果是系統根分區的數據遭到誤刪除,就需要將系統進入單用戶,并且將根分區以只讀模式掛載。這樣做的原因很簡單,因為將文件刪除后,僅僅是將文件的inode結點中的扇區指針清零,實際文件還存儲在磁盤上,如果磁盤以讀寫模式掛載,這些已刪除的文件的數據塊就可能被操作系統重新分配出去,在這些數據塊被新的數據覆蓋后,這些數據就真的丟失了,恢復工具也回力無天。所以,以只讀模式掛載磁盤可以盡量降低數據塊中數據被覆蓋的風險,以提高恢復數據成功的比率。


6.1通過extundelete恢復單個文件

1.模擬數據誤刪除環境

在演示通過extundelete恢復數據之前,我們首先要模擬一個數據誤刪除環境,這里我們以ext3文件系統為例,在ext4文件系統下的恢復方式與此完全一樣。簡單的模擬操作過程如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 [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 [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.卸載磁盤分區

在將數據誤刪除后,立刻需要做的就是卸載這塊磁盤分區:

1 2 [root@cloud1?data]#cd?/mnt [root@cloud1?mnt]#?umount?/data

3.查詢可恢復的數據信息

通過extundelete命令可以查詢/dev/sdc1分區可恢復的數據信息:

1 2 3 4 5 6 7 8 9 [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

根據上面的輸出,標記為Deleted狀態的是已經刪除的文件或目錄。同時還可以看到每個已刪除文件的inode值,接下來就可以恢復文件了。

4.恢復單個文件

執行如下命令開始恢復文件:

1 2 3 4 5 6 7 8 9 [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恢復單個文件的參數是“--restore-file”,這里需要注意的是,“--restore-file”后面指定的是恢復文件路徑,這個路徑是文件的相對路徑。相對路徑是相對于原來文件的存儲路徑而言的,比如,原來文件的存儲路徑是/data/passwd,那么在參數后面直接指定passwd文件即可,如果原來文件的存儲路徑是/data/test/mytest.txt,那么在參數后面通過“test/mytest.txt”指定即可。

在文件恢復成功后,extundelete命令默認會在執行命令的當前目錄下創建一個RECOVERED_FILES目錄,此目錄用于存放恢復出來的文件,所以執行extundelete命令的當前目錄必須是可寫的。

根據上面的輸出,通過md5sum命令校驗,校驗碼與之前的完全一致,表明文件恢復成功。


6.2通過extundelete恢復單個目錄

extundelete除了支持恢復單個文件,也支持恢復單個目錄,在需要恢復目錄時,通過 “--restore-directory”選項即可恢復指定目錄的所有數據。

繼續在上面模擬的誤刪除數據環境下操作,現在要恢復/data目錄下的ganglia-3.4.0文件夾,操作如下:

1 2 3 4 5 6 7 8 9 10 11 12 [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已經成功恢復了,進入這個目錄檢查發現:所有文件內容和大小都正常。


6.3 通過extundelete恢復所有誤刪除數據

當需要恢復的數據較多時,一個個地指定文件或目錄將是一個非常繁重和耗時的工作,不過,extundelete考慮到了這點,此時可以通過“--restore-all”選項來恢復所有被刪除的文件或文件夾。

仍然在上面模擬的誤刪除數據環境下操作,現在要恢復/data目錄下所有數據,操作過程如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [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

可以看到所有數據全部完整地恢復了。


6.4通過extundelete恢復某個時間段的數據

有時候刪除了大量的數據量,其中很多數據都是沒用的,我們僅需要恢復其中的一部分數據,此時,如果采用恢復全部數據的辦法,不但耗時,而且浪費資源,在這種情況下,就需要采用另外的一種恢復機制有選擇地恢復,extundelete提供了“—after”“和”--before“參數,可以通過指定某個時間段,進而只恢復這個時間段內的數據。

下面通過一個簡單示例,描述下如何恢復某個時間段內的數據。

我們首先假定在/data目錄下有個剛剛創建的壓縮文件ganglia-3.4.0.tar.gz,然后刪除此文件,接著卸載/data分區,開始恢復一小時內的文件,操作如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@cloud1?~]#cd?/data/ [root@cloud1?data]#?cp?/app/ganglia-3.4.0.tar.gz??/data [root@cloud1?data]#?date?+%s 1379150309 [root@cloud1?data]#?rm?-rf?ganglia-3.4.0.tar.gz [root@cloud1?data]#?cd?/mnt [root@cloud1?mnt]#?umount?/data [root@cloud1?mnt]#?date?+%s 1379150340 [root@cloud1?mnt]#?extundelete??--after?1379146740?--restore-all?/dev/sdc1 Only?show?and?process?deleted?entries?if?they?are?deleted?on?or?after?1379146740?and?before?9223372036854775807. Loading?filesystem?metadata?...?40?groups?loaded. Loading?journal?descriptors?...?247?descriptors?loaded. Searching?for?recoverable?inodes?in?directory?/?...? 779?recoverable?inodes?found. [root@cloud1?mnt]#??cd?RECOVERED_FILES/ [root@cloud1?RECOVERED_FILES]#?ls ganglia-3.4.0.tar.gz

可以看到,剛才刪除的文件,已經成功恢復,而在/data目錄下還有很多被刪除的文件卻沒有恢復,這就是”--after“參數控制的結果,因為/data目錄下其他文件都是在一天之前刪除的,而我們恢復的是一個小時之內被刪除的文件,這就是沒有恢復其他被刪除文件的原因。

在這個操作過程中,需要注意是“--after”參數后面跟的時間是個總秒數。起算時間為“1970-01-01 00:00:00 UTC”,通過“date +%s”命令即可將當前時間轉換為總秒數,因為恢復的是一個小時之內的數據,所以“1379146740”這個值就是通過“1379150340”減去“60*60=3600”獲得的。


最后說一下安裝的時候可能會遇到

[root@localhost extundelete-0.2.4]# ./configure Configuring extundelete 0.2.4 configure: error: Can't find ext2fs library
[root@localhost extundelete-0.2.4]# yum install e2fsprogs-devel

總結

以上是生活随笔為你收集整理的extundelete应用实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。