您好,登錄后才能下訂單哦!
如何使用 Linux 文件恢復(fù)工具,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
Linux 系統(tǒng)管理員守則中有這么一條:“慎用 rm -rf 命令,除非你知道此命令所帶來的后果“,不過 Linux 下刪除文件并不是真實的刪除磁盤分區(qū)中的文件,而是將文件的 inode 節(jié)點中的扇區(qū)指針清除,同時釋放這些數(shù)據(jù)對應(yīng)的數(shù)據(jù)塊,當釋放的數(shù)據(jù)塊被系統(tǒng)重新分配時,那些被刪除的數(shù)據(jù)就會被覆蓋,所以誤刪除數(shù)據(jù)后,應(yīng)馬上卸載文件所在的分區(qū)。然后使用相關(guān)工具進行恢復(fù)。以 Ubuntu 12.04 平臺為例介介紹四個(foremost、extundelete、testdisk 和 phtorec)常用的 Linux 刪除文件恢復(fù)工具的使用方法。
Linux 文件恢復(fù)的原理
inode 和 block
首先簡單介紹一下 Linux 文件系統(tǒng)的最基本單元:inode。inode 譯成中文就是索引節(jié)點,每個存儲設(shè)備(例如硬盤)或存儲設(shè)備的分區(qū)被格式化為文件系統(tǒng)后,應(yīng)該有兩部份,一部份是 inode,另一部份是 block,block 是用來存儲數(shù)據(jù)用的。而 inode 呢,就是用來存儲這些數(shù)據(jù)的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權(quán)限等。inode 為每個文件進行信息索引,所以就有了 inode 的數(shù)值。linux 操作系統(tǒng)下可以使用 ls –id 命令來查看文件或者目錄的 inode 值,一般”root”目錄的 inode 值為 2,一個分區(qū)掛載到一個目錄下時,這個”root”目錄的 inode 值為 2。
# mount /dev/sdb2 /tmp # ls -id /tmp 2 /tmp
文件恢復(fù)的原理
本文要介紹的命令是通過文件系統(tǒng)的 inode 值(一般是 2 )來獲取文件系統(tǒng)信息。在 ext3 和 ext4 文件系統(tǒng)中,每個文件都是通過 inode 來描述其數(shù)據(jù)存放的具體位置,當文件被刪除以后,inode 的數(shù)據(jù)指針部分被清零,文件目錄區(qū)沒有太多變化。文件的讀寫都是通過 inode 來實現(xiàn),當 inode 數(shù)據(jù)指針被清零以后,即便文件內(nèi)容還在,也沒有辦法把文件內(nèi)容組合出來。當 ext3 和 ext4 文件系統(tǒng)中的元數(shù)據(jù) metadata 發(fā)生變化時,相應(yīng)的元數(shù)據(jù) metadata 在日志文件會有一份拷貝。比如一個文件被刪除了,它的 inode 信息會在日志文件中先保存一份,然后把要刪除文件 inode 相關(guān)信息清零。這個日志文件是循環(huán)使用的,當操作過多時,刪除的文件的 inode 日志記錄會被新的數(shù)據(jù)替換,這就徹底喪失了根據(jù) inode 找回數(shù)據(jù)的機會了。如果是大量文件的刪除,這個日志文件會被反復(fù)循環(huán)利用多次,只留給***刪除的那些文件的恢復(fù)機會。
使用命令行工具恢復(fù)文件
foremost 和 extundelete 簡介
formost 是一個基于文件頭和尾部信息以及文件的內(nèi)建數(shù)據(jù)結(jié)構(gòu)恢復(fù)文件的命令行工具。這個過程通常叫做數(shù)據(jù)挖掘(data carvubg)。formost 可以分析由 dd、Safeback、Encase 等生成的鏡像文件,也可以直接分析驅(qū)動器。文件頭和尾可以通過配置文件設(shè)置,也可以通過命令行開關(guān)使用 formost 內(nèi)建的文件類型。formost 最初是由美國空軍特別調(diào)查室(Air Force Office of Special Investigations)和信息系統(tǒng)安全研究中心(The Center for Information Systems Security Studies and Research)開發(fā)的,現(xiàn)在使用 GPL 許可。Foremost 支持恢復(fù)如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip。
針對 Linux 下的 ext 文件系統(tǒng)來說,常用的 Linux 文件刪除恢復(fù)工具有 debugfs、ext3grep、extundelete 等。extundelete 是一個開源的數(shù)據(jù)恢復(fù)工具,支持 ext3、ext4 文件系統(tǒng),其官方站點位于http://extundelete.sourceforce.net/,目前***穩(wěn)定版本為 0.2.0。
上面介紹的兩種命令行工具 foremost 和 extundelete 二者相比,foremost 支持的文件系統(tǒng)比較多(包括 ext2、 ext3 、vfat、NTFS、ufs、jfs 等)和 extundelete 支持的文件系統(tǒng)較少(ext3、ext4)文件系統(tǒng)。不過 foremost 只能支持恢復(fù)特定格式的文件。
使用 foremost
首先安裝軟件包:
#apt-get install foremost
其它 Linux 發(fā)行版用戶可以在 http://foremost.sourceforge.net/ 下載源代碼編譯安裝。下面看看使用方法。
恢復(fù)單個類型文件
筆者刪除一個 USB(/dev/sdba1)存儲器中一個 png 文件然后使用 formost 恢復(fù)。
#rm -f /dev/sdb1/photo1.png #foremost -t png -i /dev/sdb1
恢復(fù)完成后會在當前目錄建立一個 output 目錄,在 output 目錄下會建立 png 子目錄下會包括所有可以恢復(fù)的 png 格式的文件。
需要說明的是 png 子目錄下會包括的 png 格式的文件名稱已經(jīng)改變,另外 output 目錄下的 audit.txt 文件是恢復(fù)文件列表。
恢復(fù)多個類型文件
#foremost -v -T -t doc,pdf,jpg,gif -i /dev/sda6 -o /media/disk/Recover
恢復(fù)完成后會在當前目錄建立一個 output 目錄,在 output 目錄下會建立四個子目錄(/doc,/pdf,/jpg,/gif),分別包括四種類型文件。另外 output 目錄下的 audit.txt 文件是恢復(fù)文件列表。
使用 extundelete
首先安裝軟件包:
#apt-get install extundelete
其它 Linux 發(fā)行版用戶可以在http://extundelete.sourceforce.net/下載源代碼編譯安裝。下載安裝 extundelete 之前要安裝兩個軟件包 e2fsprogs 和 e2fslibs。下面看看使用方法
模擬數(shù)據(jù)誤刪除環(huán)境
這里我們使用一個分區(qū)/dev/sdd1 掛在在/backupdate 上,建立一個測試目錄/delete 并建立一文件:del1.txt 。
# mkdir –p /backupdate/deldate # mkfs.ext4 /dev/sdd1 # mount /dev/sdd1 /backupdate #cd /backupdate/deldate # touch del1.txt # echo " test 1" > del1.txt
獲取文件校驗碼:
# md5sum del1.txt 66fb6627dbaa37721048e4549db3224d del1.txt
刪除文件:
# rm -fr /backupdate/*
卸載文件系統(tǒng)或者掛載為只讀:
# umount /backupdate
查詢恢復(fù)數(shù)據(jù)信息,注意這里的--inode 2 這里會掃描分區(qū) :
# extundelete /dev/sdd1 --inode 2 ..... File name | Inode number | Deleted status Directory block 8657: . 2 .. 2 lost+found 11 Deleted del1.txt 12 Deleted
上面標記為 Deleted 是已經(jīng)刪除的文件或目錄。
開始恢復(fù)文件
默認恢復(fù)到當前目錄下的 RECOVERED_FILES 目錄中去。
# extundelete /dev/sdd1 --restore-file del1.txt
如果恢復(fù)一個目錄:
# extundelete /dev/sdd1 --restore-directory /backupdate/deldate
恢復(fù)所有文件:
# extundelete /dev/sdd1 --restore-all
獲取恢復(fù)文件校驗碼,對比檢測是否恢復(fù)成功:
# md5sum RECOVERED_FILES/ del1.txt 66fb6627dbaa37721048e4549db3224d RECOVERED_FILES/del1.txt
查看校驗碼與之前的是否完全一致。
應(yīng)用總結(jié):筆者在現(xiàn)實使用過程中發(fā)現(xiàn) extundelete 還是有很大的不完整性,基于整個磁盤的恢復(fù)功能較為強大,基于目錄和文件的恢復(fù)還不夠強大。在 Linux 下誤刪除了文件,當發(fā)現(xiàn)數(shù)據(jù)丟失以后,不要進行任何操作,保留現(xiàn)場。要想辦法把數(shù)據(jù)丟失的文件系統(tǒng)經(jīng)過 dd 命令或者 AIR(Automated Image Restore,http://cdnetworks-kr-2.dl.sourceforge.net/ )工具到另外的存儲空間上作為最原始的備份,以便數(shù)據(jù)恢復(fù)專家現(xiàn)場診斷恢復(fù)。
使用 scalpel
以上介紹的工具主要使用在 ext3 和 ext4 的文件系統(tǒng),如果用戶使用的那些沒有日志機制的舊有文件系統(tǒng),可以使用 scalpel 工具。scalpel 是一種快速文件恢復(fù)工具,它通過讀取文件系統(tǒng)的數(shù)據(jù)庫來恢復(fù)文件。它是獨立于文件系統(tǒng)的。
用戶可以在http://www.digitalforensicssolutions.com/Scalpel/ 下載源代碼編譯安裝。下面看看使用方法:
使用 scalpel 工具之前,首先要修改配置文件: /etc/scalpel/scalpel.conf。
例如用戶要恢復(fù)所有刪除 pdf 文件,那么要在/etc/scalpel/scalpel.conf 把包括 pdf 文件格式的兩行之前的# 去掉。
[...] pdf y 5000000 %PDF %EOF\x0d REVERSE pdf y 5000000 %PDF %EOF\x0a REVERSE [...]
然后保存文件。
下面看看使用方法:
# scalpel /dev/sdb1 -o /RECOVERY/
其中/dev/sdb1 是目標驅(qū)動器,/RECOVERY/ 是恢復(fù)文件存儲目錄。目錄下的 audit.txt 文件是恢復(fù)文件列表。
使用字符終端工具 testdisk 和 phtorec
testdisk 簡介
testdisk 是分區(qū)表恢復(fù)、raid 恢復(fù)、分區(qū)恢復(fù)的開源免費工具(testdisk 支持如下文件系統(tǒng): FAT12/FAT16/FAT32/NTFS/ext2/ext3/ext4)。testdisk 支持的功能: 修復(fù)分區(qū)表, 恢復(fù)已刪除分區(qū),用 FAT32 備份表恢復(fù)啟動扇區(qū),重建 FAT12/FAT16/FAT32 啟動扇區(qū),修復(fù) FAT 表,重建 NTFS 啟動扇區(qū),用備份表恢復(fù) NTFS 啟動扇區(qū),用 mft 鏡像表(mft mirror)修復(fù) mft 表,查找 ext2/ext3 備份的 superblock,從 FAT,NTFS 及 ext2 文件系統(tǒng)恢復(fù)刪除文件,從已刪除的 FAT,NTFS 及 ext2/ext3 分區(qū)復(fù)制文件。
使用方法
首先安裝:
#apt-get install testdisk
其它 Linux 發(fā)行版用戶可以在http://www.cgsecurity.org/wiki/TestDisk_Download 下載源代碼編譯安裝。下載安裝 testdisk 之前要安裝幾個軟件包 libjpeg8 ,libncursesw5, libuuid1, zlib1g 。下面看看使用方法。
啟動 testdisk:
#testdisk
testdisk 啟動后的工作界面首先是選擇恢復(fù)操作中的 log 文件(testdisk.log)的紀錄方式見圖 1。
圖 1.選擇恢復(fù)操作中的 log 文件的紀錄方式
[Create]新建 [Append]追加 [No Log]不紀錄
選擇了 log 文件的記錄方式后、系統(tǒng)顯示處于連接狀態(tài)的磁盤設(shè)備見圖 2。
圖 2.處于連接狀態(tài)的磁盤設(shè)備
在列出的磁盤設(shè)備中,選擇要恢復(fù)的分區(qū),然后選擇磁盤分區(qū)的種類。若是 ext4 文件系統(tǒng)的話,請選擇 [None ] Non partitioned media 見圖 3:
圖 3.選擇 [None ] Non partitioned media
說明:一般選擇[Intel] Intel/PC partition(如果是 GPT 分區(qū),請選擇 EFI GPT),對于 ext4 文件系統(tǒng)選擇 [Intel] Intel/PC partition 也能正確識別,只是分析硬盤時比較慢。
下面的畫面中選擇[Analyse],對分區(qū)進行分析見圖 4。
圖 4.對分區(qū)進行分析
下面顯示了當前分區(qū)的狀態(tài)。這是軟件分析的當前分區(qū)表的分區(qū)結(jié)果,我們選擇“Deep Search”進行一次深入檢測見圖 5。
圖 5.選擇“Deep Search”進行一次深入檢測
下面是檢測完成界面見圖 6。
圖 6.檢測完成界面
在這個畫面時,按 P 鍵就可以列出硬盤上的文件見圖 7。
圖 7.紅色的文件名稱就是已經(jīng)被刪除的文件
紅色的文件名稱就是已經(jīng)被刪除的文件,選擇好你要恢復(fù)的文件后,按 c 鍵之后,它就會問你要復(fù)制到哪個目錄,這時請選擇你要 復(fù)制的目地地(destination)即可。
photorec 簡介
photorec 是一款用于恢復(fù)硬盤、光盤中丟失的視頻、文檔、壓縮包等文件,或從數(shù)碼相機存儲卡中恢復(fù)丟失圖片的數(shù)據(jù)恢復(fù)軟件(因此,該軟件命名為 photo recovery 這個名字)。 photorec 忽略文件系統(tǒng),能直接從介質(zhì)底層恢復(fù)數(shù)據(jù),因此,在介質(zhì)的文件系統(tǒng)嚴重破壞或被重新格式化后,它也能進行數(shù)據(jù)恢復(fù)。出于安全考慮, photorec 以只讀方式來訪問您要恢復(fù)數(shù)據(jù)所在的磁盤或存儲卡介質(zhì)。提示: 一旦發(fā)現(xiàn)丟失或意外刪除了某個圖片、文件, 請不要繼續(xù)往該存儲設(shè)備或磁盤保存新文件;否則您可能會覆蓋原來的數(shù)據(jù)。 這意味著您在使用 photorec 時,您千萬不要將恢復(fù)的文件寫入到原數(shù)據(jù)所存儲的同一分區(qū)。
使用 photorec 恢復(fù)文件
photorec 是 testdisk 的伴侶程序,安裝 testdisk 后 photorec 就可以使用了。
啟動 photorec
# photorec
圖 8 中顯示了已連接磁盤設(shè)備,準備恢復(fù)的文件在那個設(shè)備上就選擇它,然后在選擇 Proceed 按鈕繼續(xù)下一步。
圖 8.已連接磁盤設(shè)備
接下來,選擇恢復(fù)的磁盤分區(qū)格式。這里選擇 ext4 見圖 9。
圖 9.選擇恢復(fù)的磁盤分區(qū)格式
畫面下方[File Opt]中有可供恢復(fù)的文件種類提供被選擇見圖 10。
圖 10.可供恢復(fù)的文件種類
說明:如果只是 root 據(jù)某些文件簽名要恢復(fù)部分文件類型,那么可以按 s 取消全部勾選,然后移動光標到要恢復(fù)的文件類型,可按空格來選擇高亮選中的類型。
下面設(shè)定要分析的磁盤空間區(qū)域,可整個分區(qū)搜索,也可只搜索自由空間(相當于未分配簇)見圖 11 。
圖 11.設(shè)定要分析的磁盤空間區(qū)域
下面選擇分區(qū)所使用的文件系統(tǒng)類型,然后設(shè)定導(dǎo)出的文件目錄,一般輸入 Y 并回車即可。圖 12 是恢復(fù)完成界面。
圖 12.恢復(fù)完成
恢復(fù)完了選擇 Quit 退出 PhtoRec。被恢復(fù)的文件是 recup_dir.x 的若干數(shù)字子組合為文件名被保存在當前目錄的/recup_dir 子目錄下的。
功能對比
表 1 是 Linux 刪除文件恢復(fù)工具
可以使用 testdisk 進行文件恢復(fù)的場合,也就是硬盤上的分區(qū)(該分區(qū)有原有數(shù)據(jù)紀錄)已經(jīng)損壞的情形。但是如果損壞之后,重新再次做成了新分區(qū)的話,文件恢復(fù)的可能性比較小,很困難。photorec 不僅針對 硬盤、USB 設(shè)備、CD-ROM、SD 卡,而且還可以對其它存儲設(shè)備進行應(yīng)用。
看完上述內(nèi)容,你們掌握如何使用 Linux 文件恢復(fù)工具的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。