本文章來介紹兩種關於Linux rm 命令誤刪檔案的恢複方法,一種是利用extundelete而另一種是用grep了了。
利用extundelete外掛程式
假設被刪除的檔案位於 /media/backup 裡,掛載的裝置是 /dev/sda3。
首先重新掛載當前磁碟。
然後安裝 extundelete 依賴的包,
代碼如下 |
複製代碼 |
sudo aptitude install e2fsprogs e2fslibs-dev |
下載 extundelete ,
解壓 extundelete,
運行
三大步
代碼如下 |
複製代碼 |
./configure make sudo make install |
可以 extundelete --help 看下用法,或者直接全部恢複 extundelete /dev/sda3 --restore-all注意,恢複後的檔案預設位於安裝這個軟體檔案夾的 RECOVERED_FILES 裡。
執行個體
grep恢複刪除檔案
先臨時建一個文字檔 vpsee.log 做測試,然後刪除這個檔案:
代碼如下 |
複製代碼 |
$ echo "important log file for vpsee.com" > vpsee.log $ cat vpsee.log important log file for vpsee.com $ rm vpsee.log |
如果能記住剛才刪除檔案中的某個關鍵字的話可以用 grep 搜尋整個 /dev/sda1,-a 標誌位的意思是把 /dev/sda1 這個分區看成是文本形式的(分區本身是二進位形式的),-B 10 -A 100 的意思是如果找到關鍵字就列印出其前10行和後100行的內容:
代碼如下 |
複製代碼 |
# grep -a -B 10 -A 100 'vpsee.com' /dev/sda1 > tmp.txt |
在一堆 @ 之間可以找到我們剛才刪除的內容:
代碼如下 |
複製代碼 |
$ vi tmp.txt ... @$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@?^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@è^K^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@è^K^@^@×^@ ^@^@important log file for vpsee.com @ @ ... |
當然,如果誤刪了二進位、doc、png/jpg/gif 之類的檔案,可以用一些第三方 ext2/ext3 檔案恢複工具協助恢複檔案,比如 TestDisk, PhotoRec 等。