恢復誤刪linux -ext3-ext2 檔案系統檔案的操作方法-轉載
如何恢復linux下刪除的檔案 (下)
現在請將附件中的 createfile.sh 檔案下載到本地,並將其儲存到 /tmp/test 目錄中,這個指令碼可以幫助我們建立一個特殊的檔案,其中每行包含 1KB 字元,最開始的14個字元表示行號。之所以採用這種檔案格式,是為了方便地確認所恢復出來的檔案與原始檔案之間的區別。這個指令碼的用法如下:
|
第 1 個參數列示所生成的檔案大小,單位是 KB;第 2 個參數列示所生成檔案的名字。
下面讓我們建立幾個測試檔案:
|
上面的命令新建立了大小為 35 KB 和 9000KB 的兩個檔案,併為它們各自儲存了一個備份,備份檔案的目的是為了方便使用 diff 之類的工具驗證最終恢復出來的檔案與原始檔案完全一致。
ls 命令的 –i 選項可以檢視有關儲存檔案使用的索引節點的資訊:
|
第一列中的數字就是索引節點號。從上面的輸出結果我們可以看出,索引節點號是按照我們建立檔案的順序 而逐漸自增的,我們剛才建立的 35K 大小的檔案的索引節點號為 13,10M 大小的檔案的索引節點號為 14。debugfs 中提供了很多工具,可以幫助我們瞭解進一步的資訊。現在執行下面的命令:
|
輸出結果顯示的就是索引節點 13 的詳細資訊,從中我們可以看到諸如檔案大小(35840=35K)、許可權(0644)等資訊,尤其需要注意的是最後 3 行的資訊,即該檔案被儲存到磁碟上的 4096 到 4104 總共 9 個資料塊中。
下面再看一下索引節點 14 (即 testfile.10M 檔案)的詳細資訊:
|
和索引節點 13 相比,二者之間最重要的區別在於 BLOCKS 的資料,testfile.10M 在磁碟上總共佔用了 2564 個資料塊,由於需要採用二級間接定址模式進行訪問,所以使用了4個塊來存放間接定址的資訊,分別是24588、25613、25614和26639,其中 25613塊中存放的是二級間接定址的資訊。
linux ext3檔案被刪除如何恢復
Ext3檔案系統結構的簡單介紹
在Linux所用的Ext3檔案系統中,檔案是以塊為單位儲存的,預設情況下每個塊的大小是1K,不同的塊以塊號區分。每個檔案還有一個節點,節點中包含
有檔案所有者,讀寫許可權,檔案型別等資訊。對於一個小於12個塊的檔案,在節點中直接儲存檔案資料塊的塊號。如果檔案大於12個塊,那麼節點在12個塊號
之後儲存一個間接塊的塊號,在這個間接塊號所對應的塊中,儲存有256個檔案資料塊的塊號(Ext2fs中每個塊號佔用4位元組,這樣一個塊中所能儲存的塊
號就是1024/4=256)。如果有更大的檔案,那麼還會在節點中出現二級間接塊和三級間接塊。
2。恢復被誤刪檔案的方法
大多數Linux發行版都提供一個debugfs工具,可以用來對Ext3檔案系統進行編輯操作。不過在使用這個工具之前,還有一些工作要做。
首先以只讀方式重新掛載被誤刪的檔案所在分割槽。使用如下命令:(假設檔案在/usr分割槽)
mount -r -n -o remount /usr
-r表示只讀方式掛載;-n表示不寫入/etc/mtab,如果是恢復/etc上的檔案,就加上這個引數。如果系統說xxx partion busy,可以用fuser命令檢視一下是哪些程式使用這個分割槽上的檔案:
fuser -v -m /usr
如果沒有什麼重要的程式,用以下命令停掉它們:(看清楚了,遠端操作的千萬別衝動,不然你會受到懲罰的)
fuser -k -v -m /usr
然後就可以重新掛載這些檔案系統了。
如果是把所有的檔案統一安裝在一個大的/分割槽當中,可以在boot提示符下用linux
single進入單使用者模式,儘量減少系統程式向硬碟寫入資料的機會,要不乾脆把硬碟掛在別的機器上。另外,恢復出來的資料不要寫到/上面,避免破壞那些
有用的資料。如果機器上有dos/windows,可以寫到這些分割槽上面:
mount -r -n /dev/hda1 /mnt/had
然後就可以執行debugfs:(假設Linux在 /dev/hda5)
#debugfs /dev/hda5
就會出現debugfs提示符debugfs:
使用lsdel命令可以列出很多被刪除的檔案的資訊:
debugfs:lsdel
debugfs: 2692 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001
…………………………………………………………………………………
36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001
debugfs:
列出的檔案有很多(這裡找到2692個),第一欄位是檔案節點號,第二欄位是檔案所有者,第三欄位是讀寫許可權,接下來是檔案大小,佔用塊數,刪除時間。然後就可以根據檔案大小和刪除日期判斷那些是我們需要的。比如我們要恢復節點是196829的檔案:
可以先看看檔案資料狀態:
debugfs:stat
Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 0 Group: 0 Size: 149500
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 38
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001
BLOCKS:
594810 594811 594814 594815 594816 594817 ………………………………….
TOTAL: 38
然後就可以用dump指令恢復檔案:
debugfs:dump /mnt/hda/01.sav
這樣就把檔案恢復出來了。退出debugfs:
debugfs:quit
另一種方法是手工編輯inode:
debugfs:mi
Mode [0100644]
User ID [0]
Group ID [0]
Size [149500]
Creation time [0x31a9a574]
Modification time [0x31a9a574]
Access time [0x31a21dd1]
Deletion time [0x31a9a574] 0
Link count [0] 1
Block count [38]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
…………………………….
Triple Indirect Block [0]
使用mi指令後每次顯示一行資訊以供編輯,其它行可以直接按回車表示確認,把deletion time改成0(未刪除),Link count改成1。改好後退出debugfs:
debugfs:quit
然後用fsck檢查/dev/hda5
fsck /dev/hda5
程式會說找到丟失的資料塊,放在lost+found裡面。'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-626030/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 恢復ext4檔案系統被誤刪的檔案
- linux系統下檔案誤刪除該如何恢復?Linux
- 實戰分析ext2檔案系統下恢復誤刪除檔案(轉)
- lsof恢復誤刪的檔案
- MySQL誤刪物理檔案的恢復(Linux)MySqlLinux
- Oracle資料恢復 - Linux / Unix 誤刪除的檔案恢復(轉)Oracle資料恢復Linux
- UNIX系統被刪檔案的恢復策略(轉)
- win10中mdf檔案被誤刪如何恢復_win10系統mdf檔案被誤刪的恢復方法Win10
- eclipse 恢復誤刪檔案Eclipse
- linux/uninx恢復刪除的檔案<轉>Linux
- linux下恢復誤刪除的資料檔案Linux
- 如何有效恢復誤刪的HDFS檔案
- 被誤刪的檔案快速恢復方法
- 使用lsof恢復誤刪除的檔案
- git恢復誤刪未提交的檔案Git
- lsof恢復oracle誤刪除檔案Oracle
- linux中誤刪除oracle資料檔案的恢復操作(轉)LinuxOracle
- 資料檔案誤刪--但有資料檔案的copy恢復
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- Linux下誤刪資料檔案從檔案控制程式碼恢復資料檔案Linux
- 如何恢復誤刪的安卓手機檔案安卓
- Oracle恢復誤刪除的資料檔案Oracle
- ZT:使用lsof恢復誤刪除的檔案
- 誤刪除資料檔案、控制檔案的非RMAN恢復方法
- 使用檔案描述符恢復誤刪除的資料檔案
- 電腦誤刪檔案怎麼恢復?
- 恢復誤刪檔案ext3grep
- 恢復刪除的檔案
- 刪除檔案的恢復
- Ubuntu boot分割槽檔案誤刪,系統無法啟動_恢復Ubuntuboot
- linux中誤刪除oracle資料檔案的恢復操作LinuxOracle
- 改寫linux rm防止誤刪檔案無法恢復Linux
- 【Solaris】Solaris檔案系統管理4 ZFS檔案系統備份、刪除與恢復
- 透過控制程式碼檔案恢復linux下誤刪除的資料檔案Linux
- win10誤刪檔案怎麼恢復Win10
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- Linux教程-使用mc恢復被刪除檔案(轉)Linux
- Git恢復刪除的檔案Git