天天看點

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        
               
  • 任何的檔案恢複工具,在使用前,均要将要恢複的分區解除安裝或挂載為隻讀,防止資料被覆寫使用。
    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~~

【完】

繼續閱讀