下面是這個(gè)教程將教你如何在Ext3的文件系統(tǒng)中恢復(fù)被rm掉的文件。
假設(shè)我們有一個(gè)文件名叫 ‘test.txt’
$ls -il test.txt
15 -rw-rw-r– 2 root root 20 Apr 17 12:08 test.txt
注意:: “-il” 選項(xiàng)表示顯示文件的i-node號(hào)(15),如果你不知道Unix/Linux文件系統(tǒng)的“I結(jié)點(diǎn)”的話,你有必要先補(bǔ)充一下相關(guān)的知識(shí)。簡(jiǎn)單說(shuō)來(lái),i結(jié)點(diǎn)就是操作管理文件的一個(gè)標(biāo)識(shí)號(hào)。
我們?cè)倏匆幌缕鋬?nèi)容:
$ cat test.txt
this is test file
好,現(xiàn)在我們開(kāi)始刪除文件:.
$rm test.txt
rm: remove write-protected regular file `test.txt’? y
使用 Journal 和 Inode 號(hào)恢復(fù)
注意,如果你刪除文件后重啟了系統(tǒng),那么,相關(guān)的文件 journal 會(huì)丟失,我們也就無(wú)法恢復(fù)文件了。所以,恢復(fù)文件的前提是,Journal不能丟失,即,系統(tǒng)不能重啟。
因?yàn)槲覀円呀?jīng)知道 test.txt 文件的 inode 號(hào)是 15,所以我們可以使用 debugfs 命令來(lái)查看:
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: 0x0 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.
請(qǐng)注意上面信息中的這一行:
Blocks: (0+1): 10234
這就是inode 15存放文件的地址(數(shù)據(jù)塊)。然后,我們知道了這個(gè)地址,我們就可以使用 dd 命令,把這個(gè)地址上的數(shù)據(jù)給取出來(lái)。
#dd if=/dev/sda5 of=/tmp/test.txt bs=4096 count=1 skip= 10234
1+0 records in
1+0 records out
if 是輸入的設(shè)備
of 是輸出的設(shè)備.
bs 指定一個(gè)block的大小
count 說(shuō)明有多少個(gè)block需要dump
skip 說(shuō)明從開(kāi)始的地方跳過(guò) 10234 個(gè)block,并從取下一個(gè)block的數(shù)據(jù)
下面讓我們看一下被恢復(fù)的文件:
$cat /tmp/test.txt
this is test file
當(dāng)然,上面的文件恢復(fù)是基于我們知道文件的inode,可在現(xiàn)實(shí)中,我們并不知道這個(gè)信息,如果我們不知道inode,我們還可能恢復(fù)嗎?是的,這是可能的,讓我們來(lái)看一下如何恢復(fù)。
使用 Journal 和 文件名恢復(fù)
如果我們不知道文件的inode我們可能恢復(fù)嗎?我可以告訴你,這是不可能的事情。不過(guò)我們有辦法知道文件的inode號(hào)。下面讓我們來(lái)看看怎么做到:
$rm mytest.txt
rm: remove write-protected regular file `mytest.txt’? y
注意,我們并不知道其inode號(hào),但我們可以使用 debugfs 命令來(lái)查看(使用其 ls -d 選項(xiàng))。
debugfs: ls -d
2 (12) . 2 (12) .. 11 (20) lost+found 2347777 (20) oss
<2121567> (20) mytest.txt
你看文件名了吧,它的inode號(hào)是 <2121567> ,注意,被刪除了的文件的inode都是用尖括號(hào)包起來(lái)的。
即然知道了inode號(hào),那么我們就很容易恢復(fù)了(使用 logdump選項(xiàng)):
debugfs: logdump -i <2121567>
Inode 2121567 is at group 65, block 2129985, offset 3840
Journal starts at block 1, transaction 405642
FS block 2129985 logged at sequence 405644, journal block 9
(inode block for inode 2121567):
Inode: 2121567 Type: bad type Mode: 0000 Flags: 0x0 Generation: 0
User: 0 Group: 0 Size: 0
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x00000000 — Thu Jan 1 05:30:00 1970
atime: 0x00000000 — Thu Jan 1 05:30:00 1970
mtime: 0x00000000 — Thu Jan 1 05:30:00 1970
Blocks:
FS block 2129985 logged at sequence 405648, journal block 64
(inode block for inode 2121567):
Inode: 2121567 Type: regular Mode: 0664 Flags: 0x0 Generation: 913772093
User: 100 Group: 0 Size: 31
File ACL: 2130943 Directory ACL: 0
Links: 1 Blockcount: 16
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4821d5d0 — Wed May 7 21:46:16 2008
atime: 0x4821d8be — Wed May 7 21:58:46 2008
mtime: 0x4821d5d0 — Wed May 7 21:46:16 2008
Blocks: (0+1): 2142216
上面有很多信息,讓我們仔細(xì)地查看,你可以看到下面一行信息:
FS block 2129985 logged at sequence 405644, journal block 9
并且,其類(lèi)型是:
Type: bad type
再仔細(xì)看一下文件的時(shí)間戳下面的Blocks: 什么也沒(méi)有。那么,讓我們看一下下一個(gè)block:
FS block 2129985 logged at sequence 405648, journal block 64
(inode block for inode 2121567):
這一條Journal就有block信息了:
Blocks: (0+1): 2142216
這就是被刪除文件的地址,讓我們?cè)俅芜\(yùn)行恢復(fù)命令:
$sudo dd if=/dev/sda5 of=/home/hchen/mytest_recovered.txt bs=4096 skip=2142216 count=1
再讓我們來(lái)檢查一下文件內(nèi)容:
$ cat mytest_recovered.txt
this is my test file
小結(jié)
好了,下面是我們的一些總結(jié):
1)使用 debugfs: ls -d 找到被刪除文件的inode號(hào)。
2)使用 debugfs:logdump找到文件的數(shù)據(jù)塊地址。
3)使用dd 命令把數(shù)據(jù)取出來(lái)存成文件。
網(wǎng)上有很其它不同的方法來(lái)恢復(fù)文件,基本上也是使用debugfs這個(gè)命令,有的還使用到了lsdel,其實(shí)大同小異,這個(gè)教程是我在網(wǎng)上看到的,雖然他說(shuō)只是針對(duì)Ext3文件系統(tǒng)的,但我總感覺(jué)應(yīng)該可以用于Ext2文件系統(tǒng),不過(guò)我沒(méi)有試過(guò)。也許Ext2和Ext3被debugfs輸出的信息不一樣吧。大家可以去試試。
當(dāng)前標(biāo)題:恢復(fù)EXT3下被刪除的文件-創(chuàng)新互聯(lián)
本文地址:http://aaarwkj.com/article30/pidso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、自適應(yīng)網(wǎng)站、域名注冊(cè)、外貿(mào)建站、網(wǎng)站導(dǎo)航、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容