天天看點

CentOS6.3下部署檔案恢複神器extundelete

     最近看到群裡提到如何恢複LINUX下ext4誤删的檔案,之前聽說過ext3分區恢複工具ext3grep,但是恢複ext4一直沒有概念,而且目前線上的系統分區格式都是ext4,SO網上找到了一款叫extundelete的檔案恢複工具,該工具最給力的一點就是支援ext3/ext4雙格式分區恢複,對我們運維攻城獅算是一款神器級别的軟體,這裡整理了如下文檔,供大家參考。

虛拟機:        vmware workstation 9.0.2

作業系統:      CentOS6.3 x64

extundelete:   extundelete-0.2.4

一.模拟環境

1.首先關閉SELINUX

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

2.在虛拟機上建立一個2G的磁盤

<a target="_blank" href="http://blog.51cto.com/attachment/201309/153304824.jpg"></a>

3.進入系統,建立一個2G的主分區

# fdisk /dev/sdb

---------------------

n+p+1+回車+回車+w

4.使分區無需重新開機就能生效

# partx -a /dev/sdb

5.格式化為ext4分區并挂載

# mkfs.ext4 /dev/sdb1

# mkdir /data

# mount /dev/sdb1 /data

注: 在實際線上恢複過程中,切勿将extundelete安裝到你誤删的檔案所在硬碟,這樣會有一定幾率将需要恢複的資料徹底覆寫。

建議加裝一塊硬碟将extundelete安裝到此硬碟,再做以下操作。

二.extundelete安裝

1.安裝依賴包

# yum install e2fsprogs* -y

2.下載下傳并安裝extundelete

# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

# tar -jxvf extundelete-0.2.4.tar.bz2

# cd extundelete-0.2.4

# ./configure --prefix=/usr/local/extundelete

# make &amp;&amp; make install

3.驗證是否安裝成功

# cd /usr/local/extundelete/bin

# ./extundelete -v

extundelete version 0.2.4

libext2fs version 1.41.12

Processor is little endian.

4.設定環境變量

# echo "PATH=/usr/local/extundelete/bin:$PATH" &gt;&gt; /etc/profile

# echo "export PATH" &gt;&gt; /etc/profile

# source /etc/profile

5.上傳一些圖檔,安裝包等檔案到/data目錄

# cd /data

# yum install lrzsz -y

# rz

-------------

本地檔案.....

# ls

------------------

lost+found  mysql-5.6.10.tar.gz  nginx.conf  pic.jpg

6.全部删除

# rm -rf *

7.檢視被删除檔案

1).檢視前需解除安裝該磁盤分區

# cd ~

# umount /dev/sdb1

2).檢視檔案

注:一般一個分區挂載到一個目錄下時,這個”根”目錄的inode值為2

我們為了檢視根目錄所有檔案,是以檢視分區inode為2的這個部分

# extundelete /dev/sdb1 --inode 2

--------------------------------

.....

File name                                       | Inode number | Deleted status

.                                                 2

..                                                2

lost+found                                        11             Deleted

mysql-5.6.10.tar.gz                               12             Deleted

nginx.conf                                        13             Deleted

pic.jpg                                           14             Deleted

注:标記為”Deleted”的檔案則是被删除的檔案

8.恢複指定的檔案

注: 預設被删檔案會恢複到目前目錄下的RECOVERED_FILES目錄中去

# extundelete --restore-file pic.jpg /dev/sdb1  

# cd RECOVERED_FILES/

# ll

----------------

-rw-r--r-- 1 root root 52592 8月  13 07:18 pic.jpg

9.完全恢複裝置上檔案

# extundelete --restore-all /dev/sdb1

-----------------------------------

總用量 34464

-rw-r--r-- 1 root root 35174149 8月  13 07:24 mysql-5.6.10.tar.gz

-rw-r--r-- 1 root root     4551 8月  13 07:24 nginx.conf

-rw-r--r-- 1 root root    52592 8月  13 07:18 pic.jpg

-rw-r--r-- 1 root root    52592 8月  13 07:24 pic.jpg.v1

注:這裡完全恢複并不會把之前恢複的pic.jpg檔案覆寫掉,而是重命名為pic.jpg.v1

10.恢複指定的時間點後被删檔案

1).指定一個時間點

# date -d "Sep 4 03:09:13 2013" +%s

1378235353

2).恢複這個時間點後的檔案

# extundelete --restore-all --after “1378235353” /dev/sdb1

--------------------

..........

注:如果要恢之前的就用before參數。extundelete指令與after結合使用,在進行恢複時非常有用,可以過濾掉那太舊的檔案,減小恢複壓力。

11.檢驗是否恢複成功

# md5sum RECOVERED_FILES/mysql-5.6.10.tar.gz

------------------------------------

9dcee911fb4bc7e977a6b63f4d3ffa63  RECOVERED_FILES/mysql-5.6.10.tar.gz

上傳剛才誤删的mysql安裝包

...

# md5sum mysql-5.6.10.tar.gz

---------------------------------

9dcee911fb4bc7e977a6b63f4d3ffa63  mysql-5.6.10.tar.gz

MD5值相同,恢複成功。。。

     本文轉自 showerlee 51CTO部落格,原文連結:http://blog.51cto.com/showerlee/1288591,如需轉載請自行聯系原作者

繼續閱讀