Linux文件恢復(fù)指南
作為一個(gè)多用戶、多任務(wù)的操作系統(tǒng),Linux下的文件一旦被刪除,是難以恢復(fù)的。盡管刪除命令只是在文件節(jié)點(diǎn)中作刪除標(biāo)記,并不真正清除文件內(nèi)容,但是其他用戶和一些有寫盤動(dòng)作的進(jìn)程會(huì)很快覆蓋這些數(shù)據(jù)。不過(guò),
作為一個(gè)多用戶、多任務(wù)的操作系統(tǒng),Linux下的文件一旦被刪除,是難以恢復(fù)的。盡管刪除命令只是在文件節(jié)點(diǎn)中作刪除標(biāo)記,并不真正清除文件內(nèi)容,但是其他用戶和一些有寫盤動(dòng)作的進(jìn)程會(huì)很快覆蓋這些數(shù)據(jù)。不過(guò),對(duì)于家庭單機(jī)使用的Linux,或者誤刪文件后及時(shí)補(bǔ)救,還是可以恢復(fù)的。
Ext2文件系統(tǒng)結(jié)構(gòu)及工作原理
在Linux所用的Ext2文件系統(tǒng)中,文件是以塊為單位存儲(chǔ)的,默認(rèn)情況下每個(gè)塊的大小是1K,不同的塊以塊號(hào)區(qū)分。每個(gè)文件還有一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)中包含有文件所有者,讀寫權(quán)限,文件類型等信息。對(duì)于一個(gè)小于12個(gè)塊的文件,在節(jié)點(diǎn)中直接存儲(chǔ)文件數(shù)據(jù)塊的塊號(hào)。如果文件大于12個(gè)塊,那么節(jié)點(diǎn)在12個(gè)塊號(hào)之后存儲(chǔ)一個(gè)間接塊的塊號(hào),在這個(gè)間接塊號(hào)所對(duì)應(yīng)的塊中,存儲(chǔ)有256個(gè)文件數(shù)據(jù)塊的塊號(hào)。如果有更大的文件,那么還會(huì)在節(jié)點(diǎn)中出現(xiàn)二級(jí)間接塊和三級(jí)間接塊。
誤刪文件恢復(fù)方法
大多數(shù)Linux發(fā)行版都提供一個(gè)debugfs工具,可以用來(lái)對(duì)Ext2文件系統(tǒng)進(jìn)行編輯操作。在使用這個(gè)工具之前,需要一些準(zhǔn)備工作。首先以只讀方式重新掛載被誤刪的文件所在分區(qū)。然后可以通過(guò)fuser命令查看并停止占用該分區(qū)的進(jìn)程。接著,重新掛載文件系統(tǒng)。如果是將所有文件安裝在一個(gè)大的/分區(qū)中,可以進(jìn)入單用戶模式以減少系統(tǒng)進(jìn)程對(duì)硬盤寫入數(shù)據(jù)的機(jī)會(huì)。
在重新掛載文件系統(tǒng)后,可以使用debugfs工具來(lái)恢復(fù)誤刪除的文件。通過(guò)列出文件并根據(jù)文件大小和刪除日期確認(rèn)需要恢復(fù)的文件。對(duì)于目標(biāo)文件,可以修改其狀態(tài),如把deletion time改成0,Link count改成1。隨后退出debugfs,并使用fsck命令檢查文件系統(tǒng)。程序會(huì)將找到的丟失數(shù)據(jù)塊放在lost found目錄中,其中包含我們需要的文件。
總之,要想成功恢復(fù)誤刪除的Linux文件,需要理解Ext2文件系統(tǒng)的結(jié)構(gòu)和工作原理,并熟練使用debugfs等相關(guān)工具進(jìn)行操作。及時(shí)采取恢復(fù)措施,避免數(shù)據(jù)被覆蓋,最大程度地提高文件恢復(fù)的成功率。