1. 程式人生 > >ubuntu下恢復rm刪除的資料

ubuntu下恢復rm刪除的資料

                     

1. 論“備份”的重要性

今天手真快,Tab補全檔名後回車,昨天一天寫的程式碼就被我remove了。雖然自己寫了指令碼備份系統和home目錄,但系統是1天一備份,home是2天一次增量備份。又恰巧昨晚沒有備份home,並且git也沒有提交,欲哭無淚的感覺5555~~。

被remove掉的檔案其實是可以恢復的,刪除命令只是在檔案節點中作了刪除標記,並不是真正清空內容,但是其他使用者和一些有寫盤動作的程序會很快覆蓋這些資料。所以要想恢復磁碟資訊,必須馬上停止任何寫磁碟操作

我是將整個磁碟解除安裝下來,用轉接線掛到同學筆記本上才恢復成功的,下面將介紹具體的恢復過程。

2. 恢復工具介紹

針對Linux下的EXT檔案系統來說,常用的誤刪恢復工具有debugfs

ext3grepextundelete等等。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~~

【完】