centOS6.4 extundelete工具恢復rm -rf 刪除的目錄


PS:補充下,我在fedora 19上運行的時候遇到的一個問題:

1 [root@localhost extundelete-0.2.4]# ./configure
2 Configuring extundelete 0.2.4
3 configure: error: in `/usr/local/src/extundelete-0.2.4':
4 configure: error: C++ compiler cannot create executables
5 See `config.log' for more details

查看了下config.log文件發現與gcc-c++有關。所以運行yum -y install gcc-c++這個庫后問題解決

 1 總計                                            988 kB/s | 8.2 MB     00:08     
 2 Running transaction check
 3 Running transaction test
 4 Transaction test succeeded
 5 Running transaction
 6   正在安裝    : libstdc++-devel-4.8.1-1.fc19.i686                           1/2 
 7   正在安裝    : gcc-c++-4.8.1-1.fc19.i686                                   2/2 
 8   驗證中      : libstdc++-devel-4.8.1-1.fc19.i686                           1/2 
 9   驗證中      : gcc-c++-4.8.1-1.fc19.i686                                   2/2 
10 
11 已安裝:
12   gcc-c++.i686 0:4.8.1-1.fc19                                                   
13 
14 作為依賴被安裝:
15   libstdc++-devel.i686 0:4.8.1-1.fc19                                           
16 
17 完畢!
18 [root@localhost extundelete-0.2.4]# ./configure 
19 Configuring extundelete 0.2.4
20 Writing generated files to disk
21 [root@localhost extundelete-0.2.4]# yum install gcc-c++

 

 

首先。Linux下很多人都喜歡用rm -rf去刪除目錄。但是rm --help提示這是一個非常危險的命令、謹慎用之。

這里公司一台服務器。同事在操作的過程中誤刪掉一個目錄。而且是非常重要的。

嘗試恢復cat /etc/redhat-release 查看為rhel4版本。很老了這就有一個問題出現yum無法用。

先用一個ext3grep 工具恢復。但是該工具--help 提示沒有針對目錄恢復的參數 只有一個all 我嘗試用時間戳恢復當時時間段的數據效果不理想、

而且跟要命的是當我查看分區的時候df -aT發現這個刪除的目錄進入奇跡般的划分在了與/一個分區。0 0這意味着我掛載為只讀分區時要殺掉一

切與/根分區有關的進程;所有反復思索后決定一個好的辦法:

USB移動硬盤安裝一個便攜Linux系統,並在其上面安裝extundelete工具因為這個工具需要幾個包的支持。而rhel4的系統現在yum已經無法使用

安裝支持包都很困難。索性放棄。

關於USB移動硬盤系統。與我們用的stat 硬盤安裝系統一樣。可以用光盤鏡像安裝選擇USB設備為安裝設備。或者用虛擬機安裝都可以。這里我就

不多說推薦虛擬機Virtual BoxVMware(優點是你有鏡像但無法刻盤)。

好了進入centOS6.4后

下載extundelete:wget http://pkgs.fedoraproject.org/repo/pkgs/extundelete/extundelete-0.2.4.tar.bz2/77e626ad31433680c0a222069295d2ca/extundelete-0.2.4.tar.bz2

 

1 [root@vbok src]# wget http://pkgs.fedoraproject.org/repo/pkgs/extundelete/extundelete-0.2.4.tar.bz2/77e626ad31433680c0a222069295d2ca/extundelete-0.2.4.tar.bz2
1 [root@vbok src]# tar jxvf extundelete-0.2.4.tar.bz2

直接./configure make make install 但我運行./configure時報錯:

1 [root@vbok src]# cd extundelete-0.2.4
2 [root@vbok extundelete-0.2.4]# ./configure 
3 Configuring extundelete 0.2.4
4 configure: error: Can't find ext2fs library

提示 ext2fs library 少幾個包的支持

1 [root@vbok extundelete-0.2.4]# yum -y install ext2fs

OK 在運行make三部曲

[root@vbok extundelete-0.2.4]# ./configure 
Configuring extundelete 0.2.4
Writing generated files to disk

當然如果你make完后就可以使用這個工具的

1 [root@vbok extundelete-0.2.4]# make
2 make -s all-recursive
3 Making all in src
4 extundelete.cc:571: 警告:未使用的參數‘flags’

直接在~/src/extundelete --help

[root@vbok extundelete-0.2.4]# src/extundelete --help

或者在運行 make install 這時會安裝到/usr/local/bin/extundelete 下

我還是推薦make完就成了。因為假如你要恢復的目錄正好是/usr 那你就還需要在./configure下加參數。浪費時間效果一樣

OK來演示下恢復吧

 1 [root@vbok /]# df -h
 2 文件系統              容量  已用  可用 已用%% 掛載點
 3 /dev/mapper/vg_vbok-gen
 4                        25G  541M   23G   3% /
 5 tmpfs                 943M  232K  943M   1% /dev/shm
 6 /dev/sdb1             485M   36M  424M   8% /boot
 7 /dev/mapper/vg_vbok-home
 8                        20G  172M   19G   1% /home
 9 /dev/mapper/vg_vbok-opt
10                        11G  156M  9.9G   2% /opt
11 /dev/mapper/vg_vbok-usr
12                        39G  3.2G   34G   9% /usr
13 /dev/sdb3              51G   16K   51G   1% /vfat

我在/opt下創建了個目錄 “1“ 下面有多個子目錄和文件。然后我將其刪除。

(看看現在的時間)並回到extundelete 安裝目錄下將opt目錄掛載為只讀為了保護數據防止重寫。

 1 root@vbok /]# cd opt/
 2 [root@vbok opt]# ls
 3 1  lost+found  rh
 4 [root@vbok opt]# date
 5 2013年 10月 14日 星期一 16:44:55 CST
 6 [root@vbok opt]# rm -rf 1
 7 [root@vbok opt]# ls
 8 lost+found  rh
 9 [root@vbok opt]# cd /usr/local/src/extundelete-0.2.4
10 [root@vbok extundelete-0.2.4]# mount -o remount,ro /dev/mapper/vg_vbok-opt

這里說下我要用到的參數 src/extundelete --help

1 --restore-directory 'path'
2                          Will restore directory 'path'. 'path' is relative to the
3 --restore-all          Attempts to restore everything.
4  --after dtime          Only process entries deleted on or after 'dtime'.
5   --before dtime         Only process entries deleted before 'dtime'.

第一個是 恢復目錄 path為路徑后面跟要恢復那個目錄的路徑

第二個是 恢復所有

第三個是 恢復dtime這個時間戳以后刪除的文件 

第四個是恢復這個時間戳以前刪除的文件  (這里說下,卡時間恢復是非常好用的參數。你可以指定恢復那個時間到那個時間之間的數據)

基本這幾個選項就夠恢復了,當然還有--restore-files 參數來恢復單個文件。

OK開始

我上面在刪除的時間date了下系統時間所以我就來生成下 刪除前和刪除后的時間戳用來定位我要恢復的目錄,然后利用工具恢復刪除的目錄

[root@vbok extundelete-0.2.4]# date -d "2013-10-14 16:43" +%s
1381740180
[root@vbok extundelete-0.2.4]# date -d "2013-10-14 16:58" +%s  
1381741080
[root@vbok extundelete-0.2.4]# src/extundelete /dev/mapper/vg_vbok-opt --after /1381740180 --before 1381741080 --restore-directory 1

OK恢復完成,這里要注意的是在用恢復目錄選項的時候,后面接的目錄是以opt后的目錄。也就是說 /dev/mapper/vg-vbox-opt 已經代表了/opt這個目錄我們只需要接着寫 opt后面的目錄 例如要恢復/opt/1/2/3 這個目錄 我們后面的路徑為 1/2/3 就可以恢復3這個目錄了 當然有時間戳指定時間段后就可以用--restore-all恢復這個時間段刪除的所有數據了。OK

 1 NOTICE: Extended attributes are not restored.
 2 Loading filesystem metadata ... 86 groups loaded.
 3 Loading journal descriptors ... 91 descriptors loaded.
 4 Searching for recoverable inodes in directory 1 ... 
 5 9 recoverable inodes found.
 6 Looking through the directory structure for deleted files ... 
 7 1 recoverable inodes still lost.
 8 [root@vbok extundelete-0.2.4]# cd RECOVERED_FILES/
 9 [root@vbok RECOVERED_FILES]# LS
10 -bash: LS: command not found
11 [root@vbok RECOVERED_FILES]# ls
12 1
13 [root@vbok RECOVERED_FILES]# cd 1
14 [root@vbok 1]# ls
15 11  22
16 [root@vbok 1]# cd 11/
17 [root@vbok 11]# ls
18 2  a
19 [root@vbok 11]# cd ../22/c 
20 -bash: cd: ../22/c: 不是目錄
21 [root@vbok 11]# cd ../22/c 

數據 完好無損。

在講/opt這個分區掛載回讀寫的,不會的可以reboot重啟下也可以

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM