(點選上方公眾號,可快速關註)
來源:lujun9972,
lujun9972.github.io/blog/2018/03/08/使用foremost恢復已刪除檔案/
foremost是一款根據檔案頭,尾和內部結構來嘗試從映象檔案(或者磁碟)中恢復檔案的工具。
foremost預設可以掃描出 jpg, gif, png, bmp, avi, exe, mpg, mp4, wav, riff, wmv, mov, pdf, ole, doc, zip, rar, html, cpp 檔案。
但是透過配置它的配置檔案(預設為 /etc/foremost.conf),你還可以為它增加新的支援型別。
安裝foremost
sudo pacman -S foremost
使用foremost掃描檔案
最常用的方法就是
sudo foremost -t 檔案型別 -i 磁碟/映象檔案
比如,我誤刪除了一個 png 檔案,那麼可以執行
sudo formost -t png -i /dev/sda1
這會掃描 /dev/sda1 分割槽,嘗試查詢其中的 png 檔案,並將這些 png 檔案儲存到當前目錄下的 output 目錄中。
你也可以透過 -o 選項來指定存放檔案的目錄,但要註意,這個目錄需要是空的,否則會提示錯誤。
sudo formost -t png -i /dev/sda1 -o /tmp/png
為了方便,你也可以使用 T 選項讓foremost自動根據當前時間戳來生成output目錄,這時生成的目錄是類似這樣的 output_Thu_Mar__8_11_43_40_2018
sudo formost -t png -i /dev/sda1 -T
foremost 需要掃描整個磁碟或映象檔案來查詢可能的檔案,這常常是一個很漫長的過程,可以使用 -q 來加快掃描速度。
當啟用 -q 選項後, foremost 會僅僅在每個扇區的開始位置與檔案頭進行對比,這會極大地減少掃描時間,但可能會丟失一些巢狀在其他檔案內的檔案(比如巢狀在doc檔案中的圖片)。
sudo formost -q -t png -i /dev/sda1 -T
與 -q 常連用的是 -b number, 它可以指定磁碟每個扇區的大小,預設是512個位元組。但對於 ext4 檔案系統來說,這個值一般是4096.
sudo formost -q -b 4096 -t png -i /dev/sda1 -T
具體檔案系統的扇區大小是多少,可以透過 dumpe2fs 來檢視
sudo dumpe2fs /dev/sda1 |grep “Block size” |cut -f2 -d “:”
我們可以寫一個指令碼,將 foremost 和 dumpe2fs 結合起來實現快速掃描。
TYPE=$1
DIR=$2
fs=$(df ${DIR}|tail -n 1 |cut -f 1 -d ” “)
block_size=$(sudo dumpe2fs ${fs} |grep “Block size” |cut -f2 -d “:”)
foremost -t ${TYPE} -q -b ${block_size} -i ${fs} -T
第一個引數指定檔案型別
第二個引數指定被刪掉檔案所在的目錄
第三行找出檔案所屬的磁碟
第四行找出磁碟塊大小
第五行呼叫foremost掃描被刪除的檔案。
看完本文有收穫?請轉發分享給更多人
關註「ImportNew」,提升Java技能