ubuntu下恢復rm刪除的資料
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
- 1
任何的檔案恢復工具,在使用前,均要將要恢復的分割槽解除安裝或掛載為只讀,防止資料被覆蓋使用。
umount /dev/sdb2 mount -o remount,ro /dev/sdb2
- 1
- 2
如果刪的檔案和作業系統是在同一個分割槽上,就只有把硬碟卸下來,掛載到另一臺主機上。我就是這麼幹的^_^。
在另一臺主機上用
df -h
檢視掛載分割槽。我的分割槽是/dev/sdb2
。在該主機上執行:
extundelete /dev/sdb2 --restore-file /home/zhangchengfei/server.scala
- 1
extundelete
執行完畢後在當前目錄生產一個RECOVERED_FILES
目錄,裡面即是恢復出來的檔案。如果想恢復某個資料夾的內容,可以使用下面命令:
extundelete /dev/sdb2 --restore-directory /hom/zhangchengfei/tmp
- 1
關於
extundelete
更多的使用細節,可以用extundelete -h
進行檢視,本文不再敘述。
4. 總結經驗
其實良好的備份和同步習慣才是最重要的,絕對比恢復資料要更簡單。常見的備份策略有tar,rsync,git等等。為了防止以後rm
誤刪資料,還有種做法是自己重新定義rm
,每次不是直接刪除檔案或資料夾,而是將它們move到你指定的一個目錄下存放。具體的實現可以上google搜尋。
看這篇部落格的朋友一定是遇到和我一樣的窘境,祝好運O(∩_∩)O~~
【完】