1. 程式人生 > >Linux(以Ubuntu16.04為例)和Windows誤刪檔案恢復

Linux(以Ubuntu16.04為例)和Windows誤刪檔案恢復

在linux下有一個用著很爽的命令rm -f,意為強制刪除,同樣這也是個非常危險的命令(可以理解為禁咒2333)。所以我是儘量避免使用這條指令的。
而今天我在編譯一個C++檔案時不小心將目標檔案和原始檔位置顛倒,結果也造成了與rm同樣的結果。於是花了很久的時間來恢復這個檔案。這裡把整個過程記錄一下。
首先我們從道理上來分析一下為什麼“徹底刪除”的檔案可以恢復:
當我們徹底刪除一個檔案時,並不是從磁碟中刪除,而是將這片區域(block)標記為空閒。而如果沒有對該區域重新寫入,則“徹底刪除”的資料不會丟失掉,並且其iNode也沒有刪除或改變。
我們來簡單地證實一下這件事:
首先新建一個“aa”檔案
新建一個aa檔案


檢視其iNode後刪除
這裡寫圖片描述
這裡寫圖片描述
我們可以使用系統file system debugger函式debugfs來檢視已經“徹底刪除”檔案的iNode。

sudo debugfs
open /dev/sda1
ls -d [filepath]

第二行檔案分割槽按照自己的分割槽情況來就行,不清楚的可以通過df來檢視分割槽情況。或者df -T /home檢視詳細的使用者所在分割槽的檔案系統及使用情況。
好像又是扯了一堆理論上的東西。那麼具體來看看

如何恢復誤刪檔案:

我們要使用一個叫做extundelete的工具。

cd /tmp
wget http://jaist.dl.sourceforge
.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 tar -xjvf extundelete-0.2.4.tar.bz2 sudo apt-get install e2fsprogs sudo apt-get install e2fslibs-dev rm -f *.tar.bz2 cd ex* ./configure make

安裝成功後我們進入src資料夾下執行extundelete即可恢復近期刪除的資料。


cd src
sudo ./extundelete /dev/sda1 --restore-file [欲恢復的檔名]

還有其他如恢復全部檔案或者恢復某個資料夾,具體可以--help

那麼

Windows使用者如何恢復誤刪檔案呢?

可以按照Microsoft提出的時常建立還原點,通過還原點恢復即可。另外可以試用下EasyRecovery。
吐槽:本來好多要說的,可是csdn這個編寫文件的介面吧。╮(╯▽╰)╭