恢復Ext3下被刪除的文件(轉)

前言

下面是這個教程將教你如何在Ext3的文件系統中恢復被rm掉的文件。

?

刪除文件

假設我們有一個文件名叫 ‘test.txt’

?

 $ls -il test.txt15 -rw-rw-r– 2 root root 20 Apr 17 12:08 test.txt

注意:: “-il” 選項表示顯示文件的i-node號(15),如果你不知道Unix/Linux文件系統的“I結點”的話,你有必要先補充一下相關的知識。簡單說來,i結點就是操作管理文件的一個標識號。

我們再看一下其內容:

$ cat test.txt
this is test file

好,現在我們開始刪除文件:

$rm test.txt
rm: remove write-protected regular file `test.txt’? y

?

使用 Journal 和 Inode 號恢復

注意,如果你刪除文件后重啟了系統,那么,相關的文件 journal 會丟失,我們也就無法恢復文件了。所以,恢復文件的前提是,Journal不能丟失,即,系統不能重啟。

因為我們已經知道 test.txt 文件的 inode 號是?15,所以我們可以使用 debugfs 命令來查看:

復制代碼
debugfs: logdump -i <15>
FS block 1006 logged at sequence 404351, journal block 7241
(inode block for inode 15):
Inode: 15 Type: regular Mode: 0664 Flags: 0×0 Generation: 0
User: 0 Group: 0 Size: 20
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x48159f2d — Mon Apr 28 15:25:57 2008
atime: 0x48159f27 — Mon Apr 28 15:25:51 2008
mtime: 0x4806f070 — Thu Apr 17 12:08:40 2008
Blocks: (0+1): 10234
No magic number at block 7247: end of journal.
復制代碼

?

請注意上面信息中的這一行:

Blocks: (0+1): 10234

這就是inode 15存放文件的地址(數據塊)。然后,我們知道了這個地址,我們就可以使用 dd 命令,把這個地址上的數據給取出來。

復制代碼
#dd if=/dev/sda5 of=/tmp/test.txt bs=4096 count=1 skip= 10234
1+0 records in
1+0 records out
if 是輸入的設備
of 是輸出的設備.
bs 指定一個block的大小
count 說明有多少個block需要dump
skip 說明從開始的地方跳過 10234 個block,并從取下一個block的數據
復制代碼

?

下面讓我們看一下被恢復的文件:

$cat /tmp/test.txt 
this is test file

當然,上面的文件恢復是基于我們知道文件的inode,可在現實中,我們并不知道這個信息,如果我們不知道inode,我們還可能恢復嗎?是的,這是可能的,讓我們來看一下如何恢復。

?

使用 Journal 和 文件名恢復

如果我們不知道文件的inode我們可能恢復嗎?我可以告訴你,這是不可能的事情。不過我們有辦法知道文件的inode號。下面讓我們來看看怎么做到:

$rm mytest.txt
rm: remove write-protected regular file `mytest.txt’? y

注意,我們并不知道其inode號,但我們可以使用 debugfs 命令來查看(使用其 ls -d 選項)。

debugfs:  ls -d2  (12) .    2  (12) ..    11  (20) lost+found    2347777  (20) oss
<2121567> (20) mytest.txt

你看文件名了吧,它的inode號是 <2121567> ,注意,被刪除了的文件的inode都是用尖括號包起來的。

即然知道了inode號,那么我們就很容易恢復了(使用 logdump選項):

復制代碼
debugfs:  logdump -i <2121567>
Inode 2121567 is at group 65, block 2129985, offset 3840
Journal starts at block 1, transaction 405642FS block 2129985 logged at sequence 405644, journal block 9(inode block for inode 2121567):Inode: 2121567   Type: bad type        Mode:  0000   Flags: 0×0   Generation: 0User:     0   Group:     0   Size: 0File ACL: 0    Directory ACL: 0Links: 0   Blockcount: 0Fragment:  Address: 0    Number: 0    Size: 0ctime: 0×00000000 — Thu Jan  1 05:30:00 1970atime: 0×00000000 — Thu Jan  1 05:30:00 1970mtime: 0×00000000 — Thu Jan  1 05:30:00 1970Blocks:FS block 2129985 logged at sequence 405648, journal block 64(inode block for inode 2121567):Inode: 2121567   Type: regular        Mode:  0664   Flags: 0×0   Generation: 913772093User:   100   Group:     0   Size: 31File ACL: 2130943    Directory ACL: 0Links: 1   Blockcount: 16Fragment:  Address: 0    Number: 0    Size: 0ctime: 0x4821d5d0 — Wed May  7 21:46:16 2008atime: 0x4821d8be — Wed May  7 21:58:46 2008mtime: 0x4821d5d0 — Wed May  7 21:46:16 2008Blocks:  (0+1): 2142216
復制代碼

上面有很多信息,讓我們仔細地查看,你可以看到下面一行信息:

FS block 2129985 logged at sequence 405644, journal block 9

并且,其類型是:

 Type: bad type 

再仔細看一下文件的時間戳下面的Blocks:?什么也沒有。那么,讓我們看一下下一個block:

FS block 2129985 logged at sequence 405648, journal block 64(inode block for inode 2121567):

這一條Journal就有block信息了:

Blocks:  (0+1): 2142216

這就是被刪除文件的地址,讓我們再次運行恢復命令:

$sudo dd if=/dev/sda5 of=/home/hchen/mytest_recovered.txt bs=4096 skip=2142216 count=1

再讓我們來檢查一下文件內容:

$ cat mytest_recovered.txt
this is my test file 

?

小結

好了,下面是我們的一些總結:
1)使用 debugfs: ls -d 找到被刪除文件的inode號。
2)使用 debugfs:logdump找到文件的數據塊地址。
3)使用dd 命令把數據取出來存成文件。

網上有很其它不同的方法來恢復文件,基本上也是使用debugfs這個命令,有的還使用到了lsdel,其實大同小異,這個教程是我在網上看到的,雖然他說只是針對Ext3文件系統的,但我總感覺應該可以用于Ext2文件系統,不過我沒有試過。也許Ext2和Ext3被debugfs輸出的信息不一樣吧。大家可以去試試。

?

轉自?http://www.cnblogs.com/ggjucheng/archive/2012/10/07/2714308.html

轉載于:https://www.cnblogs.com/fwdxl/p/6706053.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254837.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

halcon trainf_ocr_class_svm 訓練OCR分類器

目錄trainf_ocr_class_svm&#xff08;算子&#xff09;描述參數trainf_ocr_class_svm&#xff08;算子&#xff09; trainf_ocr_class_svm - 訓練OCR分類器。 trainf_ocr_class_svm&#xff08;:: OCRHandle&#xff0c;TrainingFile&#xff0c;Epsilon&#xff0c;TrainMo…

Javascript之全局變量和局部變量部分講解

以此文作為自己學習的一個總結。 關于全局變量和局部變量的一句簡單的定義&#xff1a;在函數外聲明的變量都為全局變量&#xff0c;在函數內聲明的為局部變量。 一、局部變量和全局變量重名會覆蓋全局變量 1 var a 1; 2 function test1() { 3 var a 2; 4 ale…

XML-RPC使用手冊

內容列表 Preface: About This Manual Introduction to XML-RPC for C/C What is XML-RPC? How Does XML-RPC For C/C Help? More Information On XML-RPC For C/CThe Xmlrpc-c Function Libraries C Libraries C LibrariesUtility Programs xmlrpc xmlrpc_dumpserverAlterna…

利用ffmpeg來進行視頻解碼的完整示例代碼(H.264)

Decode() { FILE * inpf; int nWrite; int i,p; int nalLen; unsigned char* Buf; int got_picture, consumed_bytes; unsigned char *DisplayBuf; DisplayBuf(unsigned char *)malloc(60000); char outfile[] "test.pgm"; //1.打開輸入文件 inpf fopen("test…

如何成為非標行業的大拿

&#xfeff;&#xfeff;1&#xff0c;選一個好的舞臺&#xff08;工作環境&#xff09;&#xff0c;有個廣告詞叫&#xff1a;‘心有多大&#xff0c;舞臺就有多大’&#xff0c;我想變個說法叫‘舞臺越大&#xff0c;心就越大’。決定你表演效果的舞臺&#xff0c;你如果選擇…

TCP UDP HTTP 的關系和區別

TCP UDP HTTP 三者的關系: TCP/IP是個協議組&#xff0c;可分為四個層次&#xff1a;網絡接口層、網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層中有TCP協議與UDP協議。 在應用層有HTTP、FTP、TELNET、SMTP、DNS等協議。 TCP…

微信開放平臺全網發布時,檢測失敗 —— C#

主要就是三個&#xff1a;返回API文本消息&#xff0c;返回普通文本消息&#xff0c;發送事件消息 --會出現失敗的情況 &#xff08;后續補充說明&#xff1a;出現檢測出錯&#xff0c;不一定是代碼出現了問題&#xff0c;也有可能是1.微信方面檢測時出現服務器請求失敗&…

halcon reduce_ocr_class_svm 縮減基于SVM的OCR分類器。

目錄reduce_ocr_class_svm&#xff08;算子&#xff09;描述參數reduce_ocr_class_svm&#xff08;算子&#xff09; reduce_ocr_class_svm - 縮減基于SVM的OCR分類器。 reduce_ocr_class_svm&#xff08;:: OCRHandle&#xff0c;Method&#xff0c;MinRemainingSV&#xff…

Zabbix 釘釘報警

話不多說&#xff0c;咱們直接進入正題釘釘報警時基于zabbix&#xff0c;訪問釘釘應用接口去推送的報警消息&#xff0c;所以我們需要一個在釘釘創建一個報警應用1、 我做的釘釘報警是基于釘釘自定義應用進行推送的所以需要登錄釘釘管理后臺進行創建&#xff08;zabbix自定義應…

七大因素阻礙非標自動化行業發展,那么應對的策略是什么呢?

&#xfeff;&#xfeff; 非標自動化機械相對于標準機械而言&#xff0c;是可以根據企業需要量身定做的設備&#xff0c;可以實現標準機械所不能實現的一些功能&#xff0c;實現標準件不可能達到的產量。例如在注塑行業中&#xff0c;眾多注塑企業根據自身實際情況通過制造業自…

單播、多播(組播)和廣播的區別

單播、多播和廣播單播”&#xff08;Unicast&#xff09;、“多播”&#xff08;Multicast&#xff09;和“廣播”&#xff08;Broadcast&#xff09;這三個術語都是用來描述網絡節點之間通訊方式的術語。那么這些術語究竟是什么意思&#xff1f;區別何在&#xff1f;1.單播&am…

數據庫資源博客---小麥苗BEST

http://blog.csdn.net/lihuarongaini/article/details/60584577 http://blog.csdn.net/lihuarongaini/article/details/68485838轉載于:https://www.cnblogs.com/zengkefu/p/6718754.html

halcon write_ocr_class_svm 將OCR分類器寫入文件

目錄write_ocr_class_svm&#xff08;運算符&#xff09;描述參數write_ocr_class_svm&#xff08;運算符&#xff09; write_ocr_class_svm - 將OCR分類器寫入文件。 write_ocr_class_svm&#xff08;:: OCRHandle&#xff0c;FileName ? 描述 write_ocr_class_svm將OCR分…

jQuery插件備忘

jQuery BlockUI Plugin 遮罩插件 http://malsup.com/jquery/block/ artDialog是一個基于javascript編寫的對話框組件&#xff0c;它擁有精致的界面與友好的接口 …

于敦德:途牛五大戰略縱深不懼同質化競爭

&#xfeff;&#xfeff;于敦德說&#xff0c;途牛已經在目的地、出發地、產品系列、客戶和品牌五個領域建立起了縱深壁壘&#xff0c;不擔心任何局部競爭&#xff0c;將堅決把局部同質化戰爭打到底。 一個行業的兩種公司 包括旅游在內的很多行業通常都有兩種公司&#xff1a;…

活在當下吧

‘’你得為你自己而活&#xff0c;想要什么就去爭取&#xff0c;不要干等著以為別人會施舍給你&#xff0c;也不要在意別人的眼光和看法&#xff0c;你首先得考慮的是你自己。” “你要明白&#xff0c;只有當你自己在乎自己的時候&#xff0c;別人才會用正眼看你&#xff0c;才…

ptime概述

官方給出的ptime的定義是&#xff1a;ptime gives the length of time in milliseconds represented by themedia in a packet。簡單來講就是一個數據包中媒體的時長&#xff0c;以毫秒為單位。比如&#xff1a;ptime:20就是定義為20毫秒。 每種媒體的時間是不一樣。比如&#…

halcon clear_ocr_class_svm 清除基于SVM的OCR分類器

目錄clear_ocr_class_svm&#xff08;算子&#xff09;描述參數&#xff1a;clear_ocr_class_svm&#xff08;算子&#xff09; clear_ocr_class_svm - 清除基于SVM的OCR分類器。 clear_ocr_class_svm&#xff08;:: OCRHandle ? 描述 clear_ocr_class_svm清除OCRHandle給…

自定義線程的方式

2019獨角獸企業重金招聘Python工程師標準>>> package com.javaxxz.test;public class Demo extends Thread {/*** 創建線程的方式* 方式一&#xff1a;* 1、自定義一個類繼承Thread類* 2、重寫Thread類的run方法,把自定線程的任務代碼寫在run方法中* …

如何使用思維導圖

&#xfeff;&#xfeff;思?維?導?圖?比?較?容?易?,?因?為?我?們?平?時?都?是?這?樣?思?考?,?但?參?考?一?些?思?維?導?圖?練?習?案?例?,?還?是?有?幫?助?的?,?使?我?們?做?的?更?好?!