亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

Linux認(rèn)證

Linux下extun軟件的應(yīng)用

時(shí)間:2024-07-23 00:52:21 Linux認(rèn)證 我要投稿
  • 相關(guān)推薦

Linux下extun軟件的應(yīng)用

  作為一名運(yùn)維人員,保證數(shù)據(jù)的安全是根本職責(zé),所以在維護(hù)系統(tǒng)的時(shí)候,要慎之又慎,但是有時(shí)難免會(huì)出現(xiàn)數(shù)據(jù)被誤刪除的情況,在這個(gè)時(shí)候改如何快速、有效地恢復(fù)數(shù)據(jù)呢?下面一起和小編來看看吧。

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

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

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

  二、extun與ext3grep的異同

  在Linux下,基于開源的數(shù)據(jù)恢復(fù)工具有很多,常見的有debugfs、R-Linux、ext3grep、extun等,比較常用的有ext3grep和extun,這兩個(gè)工具的恢復(fù)原理基本一樣,只是extun功能更加強(qiáng)大,本文重點(diǎn)介紹extun的使用。

  三、extun的恢復(fù)原理

  在介紹使用extun進(jìn)行恢復(fù)數(shù)據(jù)之前,簡單介紹下關(guān)于inode的知識(shí)。在Linux下可以通過“l(fā)s –id”命令來查看某個(gè)文件或者目錄的inode值,例如查看根目錄的inode值,可以輸入:

  [root@cloud1 ~]# ls -id /

  2 /

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

  在利用extun恢復(fù)文件時(shí)并不依賴特定文件格式,首先extun會(huì)通過文件系統(tǒng)的inode信息(根目錄的inode一般為2)來獲得當(dāng)前文件系統(tǒng)下所有文件的信息,包括存在的和已經(jīng)刪除的文件,這些信息包括文件名和inode。然后利用inode信息結(jié)合日志去查詢?cè)搃node所在的block位置,包括直接塊,間接塊等信息。最后利用dd命令將這些信息備份出來,從而恢復(fù)數(shù)據(jù)文件。

  四、 安裝extun

  extun的官方的網(wǎng)站是http://extun.sourceforge.net/ ,其目前的穩(wěn)定版本是extun-0.2.4。,在安裝extun之前需要安裝e2fsprogs和e2fsprogs-libs兩個(gè)依賴包。

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

  [root@cloud1 app]#tar jxvf extun-0.2.4.tar.bz2

  [root@cloud1 app]#cd extun-0.2.4

  [root@cloud1 extun-0.2.4]#./configure

  [root@cloud1 extun-0.2.4]#make

  [root@cloud1 extun-0.2.4]#make install

  成功安裝extun后,會(huì)在系統(tǒng)中生成一個(gè)extun可執(zhí)行文件。extun的使用非常簡單,讀者可以通過“extun --help”獲得此軟件的使用方法。

  五、extun用法詳解

  extun安裝完成后,就可以執(zhí)行數(shù)據(jù)恢復(fù)操作了,本節(jié)詳細(xì)介紹下extun每個(gè)參數(shù)的含義。extun用法如下:

  extun --help

  命令格式:

  1

  extun [options] [action] device-file

  其中參數(shù)(options)有:

  --version, -[vV],顯示軟件版本號(hào)。

  --help,顯示軟件幫助信息。

  --superblock,顯示超級(jí)塊信息。

  --journal,顯示日志信息。

  --after dtime,時(shí)間參數(shù),表示在某段時(shí)間之后被刪的文件或目錄。

  --before dtime,時(shí)間參數(shù),表示在某段時(shí)間之前被刪的文件或目錄。

  動(dòng)作(action)有:

  --inode ino,顯示節(jié)點(diǎn)“ino”的信息。

  --block blk,顯示數(shù)據(jù)塊“blk”的信息。

  --restore-inode ino[,ino,...],恢復(fù)命令參數(shù),表示恢復(fù)節(jié)點(diǎn)“ino”的文件,恢復(fù)的文件會(huì)自動(dòng)放在當(dāng)前目錄下的RESTORED_FILES文件夾中,使用節(jié)點(diǎn)編號(hào)作為擴(kuò)展名。

  --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)命名的文件中讀取擴(kuò)展日志。

  -b blocknumber,表示使用之前備份的超級(jí)塊來打開文件系統(tǒng),一般用于查看現(xiàn)有超級(jí)塊是不是當(dāng)前所要的文件。

  -B blocksize,表示使用數(shù)據(jù)塊大小來打開文件系統(tǒng),一般用于查看已經(jīng)知道大小的文件。

  六、實(shí)戰(zhàn):extun恢復(fù)數(shù)據(jù)的過程

  在數(shù)據(jù)被誤刪除后,第一時(shí)間要做的是卸載被刪除數(shù)據(jù)所在的磁盤或磁盤分區(qū),如果是系統(tǒng)根分區(qū)的數(shù)據(jù)遭到誤刪除,就需要將系統(tǒng)進(jìn)入單用戶,并且將根分區(qū)以只讀模式掛載。這樣做的原因很簡單,因?yàn)閷⑽募⻊h除后,僅僅是將文件的inode結(jié)點(diǎn)中的扇區(qū)指針清零,實(shí)際文件還存儲(chǔ)在磁盤上,如果磁盤以讀寫模式掛載,這些已刪除的文件的數(shù)據(jù)塊就可能操作系統(tǒng)重新被分配出去,在這些數(shù)據(jù)塊被新的數(shù)據(jù)覆蓋后,這些數(shù)據(jù)就真的丟失了,恢復(fù)工具也回力無天。所以,以只讀模式掛載磁盤可以盡量降低數(shù)據(jù)塊中數(shù)據(jù)被覆蓋的風(fēng)險(xiǎn),以提高恢復(fù)數(shù)據(jù)成功的比率。

  6.1通過extun恢復(fù)單個(gè)文件

  1.模擬數(shù)據(jù)誤刪除環(huán)境

  在演示通過extun恢復(fù)數(shù)據(jù)之前,我們首先要模擬一個(gè)數(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

  [root@cloud1 ~]# mkdir /data/test

  [root@cloud1 ~]# echo "extun 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.查詢可恢復(fù)的數(shù)據(jù)信息

  通過extun命令可以查詢/dev/sdc1分區(qū)可恢復(fù)的數(shù)據(jù)信息:

  [root@cloud1 /]# extun /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ù)上面的輸出,標(biāo)記為Deleted狀態(tài)的是已經(jīng)刪除的文件或目錄。同時(shí)還可以看到每個(gè)已刪除文件的inode值,接下來就可以恢復(fù)文件了。

  4.恢復(fù)單個(gè)文件

  執(zhí)行如下命令開始恢復(fù)文件:

  [root@cloud1 /]# extun /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

  extun恢復(fù)單個(gè)文件的參數(shù)是“--restore-file”,這里需要注意的是,“--restore-file”后面指定的是恢復(fù)文件路徑,這個(gè)路徑是文件的相對(duì)路徑。相對(duì)路徑是相對(duì)于原來文件的存儲(chǔ)路徑而言的,比如,原來文件的存儲(chǔ)路徑是/data/passwd,那么在參數(shù)后面直接指定passwd文件即可,如果原來文件的存儲(chǔ)路徑是/data/test/mytest.txt,那么在參數(shù)后面通過“test/mytest.txt”指定即可。

  在文件恢復(fù)成功后,extun命令默認(rèn)會(huì)在執(zhí)行命令的當(dāng)前目錄下創(chuàng)建一個(gè)RECOVERED_FILES目錄,此目錄用于存放恢復(fù)出來的文件,所以執(zhí)行extun命令的當(dāng)前目錄必須是可寫的。

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

  6.2通過extun恢復(fù)單個(gè)目錄

  extun除了支持恢復(fù)單個(gè)文件,也支持恢復(fù)單個(gè)目錄,在需要恢復(fù)目錄時(shí),通過 “--restore-directory”選項(xiàng)即可恢復(fù)指定目錄的所有數(shù)據(jù)。

  繼續(xù)在上面模擬的誤刪除數(shù)據(jù)環(huán)境下操作,現(xiàn)在要恢復(fù)/data目錄下的ganglia-3.4.0文件夾,操作如下:

  [root@cloud1 mnt]# extun /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 d 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ù)了,進(jìn)入這個(gè)目錄檢查發(fā)現(xiàn):所有文件內(nèi)容和大小都正常。

  6.3 通過extun恢復(fù)所有誤刪除數(shù)據(jù)

  當(dāng)需要恢復(fù)的數(shù)據(jù)較多時(shí),一個(gè)個(gè)地指定文件或目錄將是一個(gè)非常繁重和耗時(shí)的工作,不過,extun考慮到了這點(diǎn),此時(shí)可以通過“--restore-all”選項(xiàng)來恢復(fù)所有被刪除的文件或文件夾。

  仍然在上面模擬的誤刪除數(shù)據(jù)環(huán)境下操作,現(xiàn)在要恢復(fù)/data目錄下所有數(shù)據(jù),操作過程如下:

  [root@cloud1 mnt]# extun /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 d 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ù)全部完整地恢復(fù)了。

  6.4通過extun恢復(fù)某個(gè)時(shí)間段的數(shù)據(jù)

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

  下面通過一個(gè)簡單示例,描述下如何恢復(fù)某個(gè)時(shí)間段內(nèi)的數(shù)據(jù)。

  我們首先假定在/data目錄下有個(gè)剛剛創(chuàng)建的壓縮文件ganglia-3.4.0.tar.gz,然后刪除此文件,接著卸載/data分區(qū),開始恢復(fù)一小時(shí)內(nèi)的文件,操作如下:

  [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]# extun --after 1379146740 --restore-all /dev/sdc1

  Only show and process d entries if they are d 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

  可以看到,剛才刪除的文件,已經(jīng)成功恢復(fù),而在/data目錄下還有很多被刪除的文件卻沒有恢復(fù),這就是”--after“參數(shù)控制的結(jié)果,因?yàn)?data目錄下其他文件都是在一天之前刪除的,而我們恢復(fù)的是一個(gè)小時(shí)之內(nèi)被刪除的文件,這就是沒有恢復(fù)其他被刪除文件的原因。

  在這個(gè)操作過程中,需要注意是“--after”參數(shù)后面跟的時(shí)間是個(gè)總秒數(shù)。起算時(shí)間為“1970-01-01 00:00:00 UTC”,通過“date +%s”命令即可將當(dāng)前時(shí)間轉(zhuǎn)換為總秒數(shù),因?yàn)榛謴?fù)的是一個(gè)小時(shí)之內(nèi)的數(shù)據(jù),所以“1379146740”這個(gè)值就是通過“1379150340”減去“60*60=3600”獲得的。

【Linux下extun軟件的應(yīng)用】相關(guān)文章:

Linux下top命令詳解07-09

Linux下程序的Profile工具04-27

怎么在linux的CLI下運(yùn)行php文件08-02

Linux下硬盤分區(qū)具體步驟08-15

Linux環(huán)境下Web項(xiàng)目的安裝與部署過程10-17

Linux下常用文本處理命令大全07-05

在Linux下制作HTML幻燈片的簡單教程參考08-18

移植開源軟件到嵌入式Linux系統(tǒng)技術(shù)攻略10-11

2017年Linux試題精選08-28

Linux認(rèn)證題目匯總09-21