1. 論“備份”的重要性
今天手真快,Tab補全檔案名後回車,昨天一天寫的代碼就被我remove了。雖然自己寫了腳本備份系統和home目錄,但系統是1天一備份,home是2天一次增量備份。又恰巧昨晚沒有備份home,并且git也沒有送出,欲哭無淚的感覺5555~~。
被remove掉的檔案其實是可以恢複的,删除指令隻是在檔案節點中作了删除标記,并不是真正清空内容,但是其他使用者和一些有寫盤動作的程序會很快覆寫這些資料。是以要想恢複磁盤資訊,必須馬上停止任何寫磁盤操作。
我是将整個磁盤解除安裝下來,用轉接線挂到同學筆記本上才恢複成功的,下面将介紹具體的恢複過程。
2. 恢複工具介紹
針對Linux下的EXT檔案系統來說,常用的誤删恢複工具有
debugfs
、
ext3grep
、
extundelete
等等。
extundelete
是一個開源的資料恢複工具,支援ext3、ext4檔案系統。
我的系統是Ubuntu15.04,檔案系統是ext4。嘗試了debugfs來恢複,但沒有成功。如果檔案系統不是ext4的同學可以嘗試下該方式,這裡有篇參考文檔。
3. extundelete恢複檔案
- 安裝extundelete
sudo apt-get install extundelete
- 任何的檔案恢複工具,在使用前,均要将要恢複的分區解除安裝或挂載為隻讀,防止資料被覆寫使用。
umount /dev/sdb2 mount -o remount,ro /dev/sdb2
- 如果删的檔案和作業系統是在同一個分區上,就隻有把硬碟卸下來,挂載到另一台主機上。我就是這麼幹的^_^。
- 在另一台主機上用
檢視挂載分區。我的分區是df -h
。/dev/sdb2
- 在該主機上執行:
extundelete /dev/sdb2 --restore-file /home/zhangchengfei/server.scala
-
執行完畢後在目前目錄生産一個extundelete
目錄,裡面即是恢複出來的檔案。RECOVERED_FILES
- 如果想恢複某個檔案夾的内容,可以使用下面指令:
extundelete /dev/sdb2 --restore-directory /hom/zhangchengfei/tmp
- 關于
更多的使用細節,可以用extundelete
進行檢視,本文不再叙述。extundelete -h
4. 總結經驗
其實良好的備份和同步習慣才是最重要的,絕對比恢複資料要更簡單。常見的備份政策有tar,rsync,git等等。為了防止以後
rm
誤删資料,還有種做法是自己重新定義
rm
,每次不是直接删除檔案或檔案夾,而是将它們move到你指定的一個目錄下存放。具體的實作可以上google搜尋。
看這篇部落格的朋友一定是遇到和我一樣的窘境,祝好運O(∩_∩)O~~
【完】