天天看點

ECS誤删檔案後恢複資料

本文檔主要以CentOS7作業系統為例,介紹如何使用開源工具Extundelete快速恢複被誤删除掉的資料。

背景資訊

在Linux下,基于開源的資料恢複工具有很多,常見的有debugfs、R-Linux、ext3grep、extundelete等,比較常用的有ext3grep和extundelete,這兩個工具的恢複原理基本一樣,隻是extundelete功能更加強大。使用阿裡雲的雲伺服器時,如果您不小心誤删除資料,并且Linux系統也沒有與Windows系統下資源回收筒類似的功能,您可以友善快速安裝extundelete工具。

extundelete工具能夠利用inode資訊結合日志去查詢該inode所在的block位置,以此查找和恢複所需的資料。該工具最給力的一點就是支援ext3/ext4雙格式分區恢複,基于整個磁盤的恢複功能較為強大。

在資料被誤删除後,首先要做的是解除安裝被删除資料所在的磁盤或磁盤分區。因為将檔案删除後,僅僅是将檔案的inode節點中的扇區指針清零,實際檔案還存儲在磁盤上,如果磁盤以讀寫模式挂載,這些已删除的檔案的資料塊就可能被系統重新配置設定出去,在這些資料塊被新的資料覆寫後,誤删除的資料就無法恢複。是以,以隻讀模式挂載磁盤可以盡量降低資料塊中資料被覆寫的風險,提高恢複資料成功的幾率。

說明 在實際線上恢複過程中,切勿将extundelete安裝到您誤删的檔案所在硬碟,這樣會有一定幾率将需要恢複的資料徹底覆寫,切記操作前做好快照備份。

本教程适用的對象是:

  • 磁盤中檔案誤删除的使用者,且未對磁盤進行過寫入等操作
  • 網站通路量小、少量ECS執行個體的使用者

需安裝的軟體及版本:e2fsprogs-devel、e2fsprogs、gcc-c++、make(編譯器等)、Extundelete-0.2.4。

說明 extundelete需要libext2fs版本1.39或更高版本來運作,但是對于ext4支援,請確定您有e2fsprogs版本1.41或更新版本(可以通過運作指令

dumpe2fs

并記錄其輸出的版本)。

以上版本是寫文檔時的軟體版本。您下載下傳的版本可能與此不同。

操作步驟

使用開源工具Extundelete快速恢複被誤删的資料的操作步驟如下:

步驟一:部署extundelete工具

運作以下指令,部署extundelete工具:

wget  http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2
yum -y install  bzip2  e2fsprogs-devel  e2fsprogs  gcc-c++  make    #安裝相關依賴和庫tar -xvjf extundelete-0.2.4.tar.bz2cd extundelete-0.2.4                                #進入程式目錄./configure                                         #如下圖表示安裝成功      
ECS誤删檔案後恢複資料
make && make install      

這個時候會出現src目錄,該目錄下有個extundelete可執行檔案以及相應路徑,其實預設檔案安裝路徑為usr/local/bin,下面模拟删除後恢複資料的操作就在usr/local/bin目錄下進行。

步驟二:使用extundelete模拟資料誤删除後恢複的過程

完成以下操作,使用extundelete模拟資料誤删除後恢複的過程:

  1. 檢查ECS現有的磁盤和可用分區,并對/dev/vdb進行分區和格式化。
    fdisk -l      
    ECS誤删檔案後恢複資料
  2. 将分區後的磁盤挂載到/zhuyun目錄下,然後在/zhuyun下建立測試檔案hello,并寫入内容

    test

    mkdir /zhuyun  #建立zhuyun目錄      
  3. mount /dev/vdb1 /zhuyun #将磁盤挂載到zhuyun目錄下      
  4. echo test > hello      #寫入測試檔案      
  5. 記錄檔案hello的md5值。md5sum指令用于生成和校驗删除前和恢複後兩個檔案的md5值。
    md5sum hello      
    ECS誤删檔案後恢複資料
  6. 模拟删除hello檔案。
    rm -rf hello      
  7. cd ~
    fuser -k /zhuyun                     #結束使用某分區的程序樹(确認沒有資源占用的話,可以跳過此步)      
  8. 解除安裝資料盤。
    umount /dev/vdb1                     #任何的檔案恢複工具,在使用前,均要将要恢複的分區解除安裝或挂載為隻讀,防止資料被覆寫使用      
  9. 使用extundelete工具恢複檔案
    1. extundelete --inode 2 /dev/vdb1       #為查找某i節點中的内容,使用2則說明為整個分區搜尋,如果需要進入目錄搜尋,隻須要指定目錄I節點即可。這是可以看到删除的檔案名和inode      
      ECS誤删檔案後恢複資料
    2. /usr/local/bin/extundelete  --restore-inode 12  /dev/vdb1    #恢複删除的檔案      

這個時候會在執行指令的同級目錄下出現RECOVERED_FILES目錄。

ECS誤删檔案後恢複資料

通過md5sum指令檢視恢複後RECOVERED_FILES檔案的md5值。

md5sum RECOVERED_FILES      

檢視删除前的hello和恢複後的RECOVERED_FILES兩個檔案的md5值是否一緻,如果一緻,則資料恢複成功。