天天看點

Centos6 模拟ext4檔案系統誤删除資料後恢複流程

前言:

Extundelete 資料恢複

       “rm -rf /*” 是我們經常使用的指令,操作不慎全盤接蹦,從删庫到跑路,身為過來人的我們都經曆過rm帶來的痛苦。

不要慌,當我們有了Extundelete就可以解決一系列誤删除操作問題。下面我會詳細介紹一下這款救命工具。

      inux檔案系統由三部分組成: 檔案名 inode(存放檔案中繼資料資訊) block(真正存儲資料的地方) .

當誤删檔案之後要想通過Extundelete進行資料恢複,首先我們要禁止寫入(解除安裝或者給隻讀權限)。

注意ext4檔案系統空檔案空目錄會被預設為無用的都不會恢複

示範開始

第一步:建立一個新的硬碟,分區、挂載、格式化

建立20G硬碟重新開機系統,加載新的硬碟  

這裡有個新技術 熱拔插:功能就是允許使用者在不關閉系統,不切斷電源的情況下取出和更換損壞的硬碟、電源或闆卡等部件,進而提高了系統對災難的及時恢複能力、擴充性和靈活性等,例如一些面向高端應用的磁盤鏡像系統都可以提供磁盤的熱插拔功能。

[[email protected] ~]# fdisk -l    檢視硬碟
[[email protected] ~]# fdisk /dev/sdb     進行分區
Command (m for help): n       建立一個分區
Command action
   e   extended
   p   primary partition (1-4)
p         建立一個主分區
Partition number (1-4): 1      主分區1 sdb1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +3G   給他分了3G
Command (m for help): p     檢視已分的區
Command (m for help): w     儲存退出
[[email protected] ~]# ll /dev/sdb*    檢視剛才分好的區
brw-rw----. 1 root disk 8, 16 4月  17 20:47 /dev/sdb
brw-rw----. 1 root disk 8, 17 4月  17 20:47 /dev/sdb1
[[email protected] ~]# mkfs.ext4 /dev/sdb1   格式化sdb1這個分區
[[email protected] ~]# mkdir /sdb1    建立一個挂載點
[[email protected] ~]# mount /dev/sdb1 /sdb1    把sdb1這個分區挂載到/sdb1
           

 第二步:在上面的分區建立測試檔案、然後删除(當誤删除檔案後需要解除安裝或者給隻讀權限)

[[email protected] ~]# cd /sdb1/
[[email protected] sdb1]# df -h
/dev/sda1                     485M   35M  426M   8% /boot
/dev/sdb1                     3.0G   69M  2.8G   3% /sdb1
[[email protected] sdb1]# cp /etc/passwd ./       建立以下三個測試檔案
[[email protected] sdb1]# cp /etc/hosts ./
[[email protected] sdb1]# echo "welcome to liunx" > a.txt
[[email protected] sdb1]# ls     檢視建立是否成功
a.txt  hosts  lost+found  passwd
[[email protected] sdb1]# rm -rf ./*   删除目前目錄下所有檔案

[[email protected] sdb1]# umount /dev/sdb1  出現這種報錯需要退出目前位置
umount: /sdb1: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[[email protected] ~]# umount /dev/sdb1    這個位置就可以解除安裝掉了
           

第三步:上傳Extundelete包進行安裝

[[email protected] src]# ls
extundelete-0.2.4.zip
[[email protected] src]# unzip extundelete-0.2.4.zip
[[email protected] src]# cd extundelete-0.2.4    一般情況安裝步驟都在README中,我們可以檢視
[[email protected] extundelete-0.2.4]# ./configure
-bash: ./configure: 權限不夠
[[email protected] extundelete-0.2.4]# chmod -R 777 ./*   然後我們給了個權限

[[email protected] extundelete-0.2.4]# ./configure   又發現了報錯
Configuring extundelete 0.2.4
configure: error: in `/usr/local/src/extundelete-0.2.4':
configure: error: C++ compiler cannot create executables
See `config.log' for more details
[[email protected] extundelete-0.2.4]# yum -y install gcc*  我們先把軟體按上

[[email protected] extundelete-0.2.4]# ./configure   又報了沒有發現這個庫的錯
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library

[[email protected] extundelete-0.2.4]# yum -y install *2fs*  把所有相似的包全安裝上
[[email protected] extundelete-0.2.4]# ./configure   這樣就成功了
Configuring extundelete 0.2.4
Writing generated files to disk

[[email protected] extundelete-0.2.4]# make -j 4  使用四核同時編譯
make -s all-recursive
Making all in src
extundelete.cc:571: 警告:未使用的參數‘flags’     這裡出現報錯我們可以通過$? 确定這步是否成功
[[email protected] extundelete-0.2.4]# echo $?     值為0的話說明我們上步沒有問題,可以不用管
0
[[email protected] extundelete-0.2.4]# make install
Making install in src
  /usr/bin/install -c extundelete '/usr/local/bin'
[[email protected] extundelete-0.2.4]# echo $?     安裝成功
0

           

第四步:使用extundelete  進行檔案的恢複

[[email protected] ~]# mkdir /huifu   建立一個目錄把檔案恢複到這個目錄
[[email protected] ~]# cd /huifu/
[[email protected] huifu]# extundelete /dev/sdb1 --inode 2  檢視inode号
[[email protected] huifu]# extundelete /dev/sdb1 --restore-inode 12   基于inode号恢複
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 25 groups loaded.
Loading journal descriptors ... 41 descriptors loaded.
[[email protected] huifu]# ls    會出現這樣一個目錄恢複的檔案就在裡面
RECOVERED_FILES
[[email protected] huifu]# cd RECOVERED_FILES/
[[email protected] RECOVERED_FILES]# ls
file.12
[[email protected] RECOVERED_FILES]# md5sum /etc/passwd file.12  通過校驗我們發現與原始檔案一樣
cac49cd2097a2c38bb91af1f7ebc1250  /etc/passwd
cac49cd2097a2c38bb91af1f7ebc1250  file.12

[[email protected] huifu]# extundelete /dev/sdb1 --restore-file passwd   通過檔案名恢複
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 25 groups loaded.
Loading journal descriptors ... 41 descriptors loaded.
Successfully restored file passwd

[[email protected] huifu]# extundelete /dev/sdb1 --restore-all   恢複所有檔案

注意#ext4檔案系統空檔案空目錄會被預設為無用的都不會恢複
extundelte /dev/sdxx/ --restore-file 檔案名
extundelte /dev/sdxx/ --restore-inode inode号
extundelte /dev/sdxx/ --restore-directory 目錄名
extundelte /dev/sdxx/ --restore-all 所有
           

繼續閱讀