ubuntu下恢復rm刪除的數據

1. 論“備份”的重要性

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

被remove掉的文件其實是可以恢復的,刪除命令只是在文件節點中作了刪除標記,並不是真正清空內容,但是其他用戶和一些有寫盤動作的進程會很快覆蓋這些數據。所以要想恢復磁盤信息,必須馬上停止任何寫磁盤操作

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


2. 恢復工具介紹

針對Linux下的EXT文件系統來說,常用的誤刪恢復工具有debugfsext3grepextundelete等等。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~~


【完】


發佈了84 篇原創文章 · 獲贊 324 · 訪問量 66萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章