閱讀841 返回首頁    go 阿裏雲 go 技術社區[雲棲]


雲服務器 ECS 數據恢複:誤刪文件後如何恢複數據




簡介

在日常使用中有時難免會出現數據被誤刪除的情況,在這個時候該如何快速、有效地恢複數據呢?在阿裏雲上恢複數據有多種方式,例如:

  • 通過阿裏雲控製台回滾備份好的快照,自定義鏡像恢複等方式。
  • 購買多台ECS,實現業務的負載均衡,高可用。
  • 利用對象存儲 OSS(Object Storage Service),存儲靜態網頁和海量圖片、視頻等重要數據。

本文檔主要以CentOS7操作係統為例,介紹如何使用開源工具Extundelete快速恢複被誤刪除掉的數據。

在Linux下,基於開源的數據恢複工具有很多,常見的有debugfs、R-Linux、ext3grep、extundelete等,比較常用的有ext3grep和extundelete,這兩個工具的恢複原理基本一樣,隻是extundelete功能更加強大。

Extundelete是基於linux的開源數據恢複軟件。在使用阿裏雲的雲服務器時,如果您不小心誤刪除數據,並且Linux係統也沒有與Windows係統下回收站類似的功能,您可以方便快速安裝此工具。

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工具

wget  https://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.bz2
cd extundelete-0.2.4                                #進入程序目錄
./configure                                         #如下圖表示安裝成功


image

make && make install

這個時候會出現src目錄,下麵有個extundelete可執行文件以及相應路徑,如下圖,其實默認文件安裝在usr/local/bin下麵,下麵演示就在usr/local/bin目錄下。

image

使用extundelete,模擬數據誤刪除然後恢複的過程

1.檢查ECS現有的磁盤和可用分區,並對/dev/vdb進行分區,格式化,此處不在介紹磁盤分區格式化方式,如果不會的話可以點擊此文檔查看操作方式“格式化和掛載數據盤”。

fdisk -l


image


2.將分區後的磁盤掛載到/zhuyun目錄下,然後在/zhuyun下麵新建測試文件hello,寫入test。

mkdir /zhuyun                                #新建zhuyun目錄
mount /dev/vdb1 /zhuyun                      #將磁盤掛載到zhuyun目錄下
echo test > hello                            #寫入測試文件

3.記錄文件MD5值,md5sum命令用於生成和校驗刪除前和恢複後倆個文件的md5值。

md5sum hello


image


4.模擬刪除hello文件。

rm -rf hello
cd ~
fuser -k /zhuyun                     #結束使用某分區的進程樹(確認沒有資源占用的話,可以跳過此步)

5.卸載數據盤。

umount /dev/vdb1                     #任何的文件恢複工具,在使用前,均要將要恢複的分區卸載或掛載為隻讀,防止數據被覆蓋使用

6.使用Extundelete工具恢複文件。

extundelete --inode 2 /dev/vdb1       #為查找某i節點中的內容,使用2則說明為整個分區搜索,如果需要進入目錄搜索,隻須要指定目錄I節點即可。這是可以看到刪除的文件名和inode


image

/usr/local/bin/extundelete  --restore-inode 12  /dev/vdb1    #恢複刪除的文件

這個時候會在執行命令的同級目錄下出現RECOVERED_FILES目錄,查看是否恢複。


image


通過md5值查看,前後倆個文件,一樣說明恢複成功。

注:

--restore-inode 12                  # --restore-inode 按指定的I節點恢複
--extundelete --restore-all         # --restore-all   全部恢複

原文鏈接

最後更新:2017-08-13 22:22:24

  上一篇:go  MaxCompute UDF係列之身份證校驗及15位身份證號碼轉換成18位
  下一篇:go  阿裏雲與神州雲計算定製混合雲解決方案助企業轉型