Extundelete 數據恢復

来源:http://www.cnblogs.com/wangxiaoqiangs/archive/2016/06/30/5630288.html
-Advertisement-
Play Games

簡介: Extundelete 數據恢復 救命的稻草!當你在運維過程中不小心誤刪除數據時,就會用到數據恢復工具,( 都是淚,不多說了 )。 常見的開源數據恢復工具有,debugfs、R-Linux、ext3grep、extundelete 等。 ext3grep 跟 extundelete 比較常用 ...


簡介:

Extundelete 數據恢復

救命的稻草!當你在運維過程中不小心誤刪除數據時,就會用到數據恢復工具,( 都是淚,不多說了 )。

常見的開源數據恢復工具有,debugfs、R-Linux、ext3grep、extundelete 等。

ext3grep 跟 extundelete 比較常用,其中 ext3grep 只支持 ext3 文件系統,extundelete 支持 ext3/ext4。

都是通過分析文件系統日誌,解析出所有文件的 inode 信息,利用 inode 去查找所在 block ,利用 dd 備份出以刪除的數據。

當數據被刪除後,立即以只讀的方式重新掛載分區... 記住是立即 !!!

下載地址:

http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

今天一不小心,刪除了一個放源碼包的目錄...

1、安裝 Extundelete

shell > yum -y install e2fsprogs-devel

## 先安裝這兩依賴包,不然會報錯:configure: error: Can't find ext2fs library

shell > tar jxf extundelete-0.2.4.tar.bz2
shell > cd extundelete-0.2.4
[root@study extundelete-0.2.4]# ./configure ; make ; make install

## 簡單介紹一下常用參數

--after dtime  時間參數,表示在某段時間之後被刪除的文件或目錄
--before dtime  時間參數,表示在某段時間之前被刪除的文件或目錄

## 簡單介紹一下常用動作

--inode ino  顯示節點 ino 的信息
--block blk  顯示數據塊 blk 的信息

--restore-inode ino  表示恢復節點 ino 的文件,用來恢復單個文件
--restore-file path  表示恢復指定路徑下的文件,用來恢複目錄下所有文件
--restore-all  表示恢復所有被刪除的目錄跟文件

2、查找被刪除的文件

shell > ls -id /usr/local/src
130619 /usr/local/src

## 首先查看被刪除的上層目錄 inode

shell > extundelete /dev/mapper/vg_study-LogVol00 --inode 130619
...
File name | Inode number | Deleted status
.                 130619
..                130587
package           137256   Deleted
apr-1.5.1         140038
apr-util-1.5.4    535002
httpd-2.4.10      535320
pcre-8.30         656184
siege-3.0.8       656483
libmcrypt-2.5.8   144383
package.xml       146709
mysql-5.6.4-m7    140588
memcache-2.2.7    146712
php-5.4.13        667097
redis-2.2.5       269016
memcached-1.4.15  146806
libevent-master   539531   Deleted

## 可以看到被刪除的目錄 package 狀態為 Deleted ,inode 為 137256

shell > extundelete /dev/mapper/vg_study-LogVol00 --inode 137256
...
File name | Inode number | Deleted status
.                 137256
..                130573
e2p.h;54b8ac2f    137260        Deleted
e2p.h             137260
mysql-5.6.4-m7.tar.gz   140630  Deleted
httpd-2.4.10.tar.gz     140035  Deleted
pcre-8.30.tar.gz        140036  Deleted
siege-3.0.8.tar.gz      140037  Deleted
libmcrypt-2.5.8.tar.bz2 144382  Deleted
php-5.4.13.tar.bz2      144439  Deleted
memcache-2.2.7.tgz      144381  Deleted
redis-2.2.5.tgz         146713  Deleted
libevent-master         539531  Deleted
memcached-1.4.15.tar.gz 144377  Deleted
libevent-master.zip     146863  Deleted

## 可以看到被刪除的目錄底下有哪些被刪除的文件及 inode 號

3、恢複數據

shell > extundelete /dev/mapper/vg_study-LogVol00 --restore-directory /usr/local/src/package

## 指定刪除目錄所在分區,--restore-directory 為恢復整個目錄,後面是要恢復的目錄

NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible. You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
Loading filesystem metadata ... 151 groups loaded.
Loading journal descriptors ... 22517 descriptors loaded.
Searching for recoverable inodes in directory /usr/local/src/package ...
1679 recoverable inodes found.
Looking through the directory structure for deleted files ...
Block 578312 is allocated.
Unable to restore inode 146713 (usr/local/src/package/redis-2.2.5.tgz): Space has been reallocated.
Unable to restore inode 539531 (usr/local/src/package/libevent-master): Space has been reallocated.
1670 recoverable inodes still lost.

## 其中,redis-2.2.4.tgz 和 libevent-master 沒有被恢復,因為 inode 被重新分配出去了...

shell > cd RECOVERED_FILES/usr/local/src/package

## 恢復完成後會在當前目錄下生成一個 RECOVERED_FILES 目錄

shell > ls
e2p.h;54b8ac2f libmcrypt-2.5.8.tar.bz2 memcached-1.4.15.tar.gz php-5.4.13.tar.bz2
libevent-master.zip memcache-2.2.7.tgz mysql-5.6.4-m7.tar.gz

## 只恢復了 7 個文件,刪除的有 12 個... 使用 find 查一下沒有恢復的文件的 inode 號

shell > find / -inum 140035
/usr/lib64/libe2p.so
shell > find / -inum 140036
/usr/lib64/libext2fs.a
shell > find / -inum 140037
/usr/lib64/libext2fs.so

## 發現 httpd 、pcre 、siege 的都被分配出去了...,現在恢復不出來的就永遠沒有了..

## 所以,千萬記住:萬一誤刪除數據了,一定要第一時間將數據所在磁碟卸載或掛載為只讀分區,防止寫入文件 inode 被重新分配。
## 如果誤刪的是根分區的數據,那麼立即進去單用戶模式,將根分區只讀掛載。
## 又引申出一個問題,做系統分區的時候,最好不要只分一個根分區,像這樣的情況很難辦...
## 第二,數據恢復軟體事先裝好吧..
## 第三,刪除數據時,先將要刪除的數據移動到 /tmp(單獨分區),然後刪除或腳本定期刪除
## 第四,做好數據備份。
## 最後,敲慢點 !!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 聲明:以下的代碼成果,是參考了網上的injso技術,文章最後會給出地址。 另外一個,injso文章中的代碼實際上不能夠運行起來的,後面出現的代碼都是經過我個人修改和檢測的。 最近因為在學習一些調試的技術,但是很少有提到如何在函數運行時實現函數替換的。 為什麼會想到這一點?因為在學習調試時,難免會看到 ...
  • call和jmp都是跳轉指令,但是call的同時會把pc地址壓入堆棧,並且這兩種方式都有遠和近跳轉。下麵的分析不全,因為沒有在網上找到足夠的資料,個人創造這個情景還是有些困難。 1.例子中的call的機器碼為0xe8。 0x400204ba <+30>: e8 41 b6 05 00 call 0x ...
  • STM32除TIM6和TIM7外都可以產生PWM輸出。高級定時器TIM1和TIM8可以同時產生7路PWM,通用定時器可以產生4路PWM輸出。 1.TIM1 CH1輸出PWM配置步驟 ①開啟TIM1時鐘,配置PA8為復用輸出 APB2外設時鐘使能寄存器(RCC_APB2ENR) APB1外設複位寄存器 ...
  • 1.什麼是kqueue和IO復用 kueue是在UNIX上比較高效的IO復用技術。 所謂的IO復用,就是同時等待多個文件描述符就緒,以系統調用的形式提供。如果所有文件描述符都沒有就緒的話,該系統調用阻塞,否則調用返回,允許用戶進行後續的操作。 常見的IO復用技術有select, poll, epol ...
  • 前幾天剛好同事問起在Cortex M上延時不准的問題,在網上也沒找到比較滿意的答案,乾脆自己對這個問題做一個總結。 根據我們的經驗,最容易想到的大概通過計算指令周期來解決。該思路在Cortex上並不是很適用:一方面MCU從Flash取指是有延時的,另一方面Cortex的指令集不是固定周期的,特別從M ...
  • 簡介: 1、在 Keepalived 集群中,其實並沒有嚴格意思上的主、備節點,雖然可以在 keepalived.conf 中定義 state 選項為 MASTER 狀態,但是這並不意味著此節點就一直是 MASTER 角色。控制節點角色的是 keepalived.conf 中的 priority 值 ...
  • 簡介: Keepalived 是一個基於 VRRP 協議來實現 WEB 服務高可用的解決方案,用來避免單點故障。主伺服器會發送特定的消息給備份伺服器,當備份伺服器收不到這個消息時,即主伺服器宕機的時候,備份伺服器就會接管虛擬 IP ,繼續提供服務,從而保證高可用性。 下載地址:http://www. ...
  • 簡介: Grub 常見的兩種故障:Grub.conf 文件丟失、MBR 損壞 ( 不管恢復怎麼樣,還是先備份好吧 ) 一、Grub.conf 文件丟失 ## 故障現象如下: ## 就這個樣子,無法登陸系統,下麵是解決方法 ## 0, 1, 2 代表分區編號,上面顯示有文件系統,分區類型,像 83 就 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...