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