linux rm -rf 刪除文件之后的恢復辦法


記錄我嘗試恢復rm命令刪除文件之后的恢復的三種辦法。

先不管使用哪種辦法,網上找到的主流的都是基於inode的,所以,在文件被刪除后,馬上掛起掛載盤只允許讀操作,拒絕寫操作是第一要義。

第一種 誤刪文件進程還在

這種方法就比較簡單,能還原的文件限制也比較多。如果被刪除的文件的進程還是存在,即能找到進程PID。通過命令 lsof | grep (deletefile) 查找到進程id。然后就是進入進程目錄 cd /proc/PID/fd 。然后可以通過 ll 命令查看具體文件信息,將有軟連接到被刪除文件的文件復制就可還原了。

 第二種 使用extundelete之類基於inode的工具

針對 Linux 下的 ext 文件系統來說,常用的 Linux 文件刪除恢復工具有 debugfs、ext3grep、extundelete 等。extundelete 是一個開源的數據恢復工具,支持 ext3、ext4 文件系統,其官方站點位於http://extundelete.sourceforce.net/,目前最新穩定版本為 0.2.0。

這個工具和還有一些其他類似的恢復工具,都是基於inode,還原文件的,也就是說,需要被刪除文件的inode還在,沒有被覆蓋,即在文件刪除之后,沒有讀寫輸入。所以第一件事就是掛起文件所在分區。但是這個操作有個問題就是,如果系統只有一個掛載盤,而且還是線上服務的話,掛起是不現實的。並且就算讀寫不多,但是系統本身沒有安裝這些恢復工具,在你安裝編譯這些恢復工具時的讀寫,也很可能把刪除的文件inode覆蓋了。

但是如果,系統擁有多個掛載盤,且被刪除文件分區所在的文件盤掛起並不印象,你還是可以嘗試這個方法的。或者系統本身就有安裝這個工具,距離文件刪除不是很久,也可以試一下,也許inode還在呢。

具體使用方法這里就不說了,網上很多教程,隨便搜一下都是。

第三種 testdisk工具

testdisk 是分區表恢復、raid 恢復、分區恢復的開源免費工具(testdisk 支持如下文件系統: FAT12/FAT16/FAT32/NTFS/ext2/ext3/ext4)。testdisk 支持的功能: 修復分區表, 恢復已刪除分區,用 FAT32 備份表恢復啟動扇區,重建 FAT12/FAT16/FAT32 啟動扇區,修復 FAT 表,重建 NTFS 啟動扇區,用備份表恢復 NTFS 啟動扇區,用 mft 鏡像表(mft mirror)修復 mft 表,查找 ext2/ext3 備份的 superblock,從 FAT,NTFS 及 ext2 文件系統恢復刪除文件,從已刪除的 FAT,NTFS 及 ext2/ext3 分區復制文件。

所以,這個工具是不基於inode的,即時文件后,沒有掛起分區,讀寫操作一直在進行,或者過去很久了,都是可以有機會恢復文件的。

但也不是百分百能成功,舉個栗子,被刪除的是 /usr/local/mytest 這個文件夾。然后你這個文件夾下部分文件的備份,為了及時先恢復部分線上業務,然后你mkdir /usr/local/mytest 然后將部分備份復制了進去。那么testdisk也無法拯救恢復了。還有就是testdisk恢復文件時,還需要注意看一下文件大小。如果文件大小顯示為0,那么就算選擇恢復這個文件,也是會得到一個0kb的文件。

所以這個適用於,一些inode已經被覆蓋,但是文件物理存儲塊還未被覆蓋的文件,可以嘗試一下這個方法,也許可以找回部分丟失文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM