Linux跟windows不同,,刪除文件后不會(huì)先到回收站,無(wú)法直接進(jìn)入回收站找回并還原,,根據(jù)Linux文件保存原理,,可以使用extundelete工具來(lái)實(shí)現(xiàn)誤刪文件數(shù)據(jù)的恢復(fù)。
本文轉(zhuǎn)自——學(xué)領(lǐng)未來(lái)
【正文】
Linux文件系統(tǒng)中刪除文件后,,實(shí)際是將inode節(jié)點(diǎn)中文件的扇區(qū)刪除,,同時(shí)釋放文件所占的數(shù)據(jù)塊block,在這些數(shù)據(jù)塊還沒被系統(tǒng)重新分配給其他文件時(shí),,可以找回已刪除的文件,,為了防止沒有新的數(shù)據(jù)寫入,需要取消掛載文件所在的盤,,此外,,也可以將盤設(shè)置為只讀模式。本文是使用umount取消掛載這一步驟來(lái)防止文件繼續(xù)寫入,。
extundelete是基于Linux的一個(gè)數(shù)據(jù)恢復(fù)工具,,它通過(guò)分析文件系統(tǒng)的日志,解析出所有文件的inode信息,,從而可以恢復(fù)Linux下主流的ext3,、ext4文件系統(tǒng)下被誤刪除的文件。extundelete會(huì)通過(guò)文件系統(tǒng)的inode信息(根目錄的inode一般為2)來(lái)獲得當(dāng)前文件系統(tǒng)下所有文件的信息,,包括存在的和已經(jīng)刪除的文件,,這些信息包括文件名和inode。然后利用inode信息結(jié)合日志去查詢?cè)?/span>inode所在的block位置,,包括直接塊,、間接塊等信息。最后利用dd命令將這些信息備份出來(lái),,從而恢復(fù)數(shù)據(jù)文件,。
一 環(huán)境準(zhǔn)備
1.1 在虛擬機(jī)新增硬盤后,新建分區(qū)
fdisk /dev/sdb
fdisk -l 確認(rèn)分區(qū)已經(jīng)創(chuàng)建
1.2 格式化分區(qū)
mkfs -t ext3 /dev/sdb1
1.3 模擬生產(chǎn)使用新建文件夾,,掛載到新建的分區(qū),,然后上傳幾個(gè)文件
mkdir /data
mount /dev/sdb1 /data/
二 文件刪除及恢復(fù)
2.1 刪除/data中剛上傳的文件
2.2 開始恢復(fù)
2.2.1 取消掛載 /data,放著該分區(qū)有寫入新數(shù)據(jù),,覆蓋原來(lái)文件所占的block
umount /dev/sdb1
2.2.2 安裝extundelete
2.2.3 查看/dev/sdb1 中的文件,,可以看到有剛才已經(jīng)刪除的文件
extundelete /dev/sdb1 –inode 2
2.2.4 恢復(fù)文件,會(huì)在當(dāng)前目錄下新建 RECOVERED_FILES 的文件夾,,文件會(huì)恢復(fù)到這個(gè)目錄下
extundelete –restore-all /dev/sdb1