記錄我嘗試恢復rm命令刪除檔案之後的恢復的三種辦法。
先不管使用哪種辦法,網上找到的主流的都是基於inode的,所以,在檔案被刪除後,馬上掛起掛載盤只允許讀操作,拒絕寫操作是第一要義。
第一種 誤刪檔案程序還在
這種方法就比較簡單,能還原的檔案限制也比較多。如果被刪除的檔案的程序還是存在,即能找到程序pid。通過命令 lsof | grep (deletefile) 查詢到程序id。然後就是進入程序目錄 cd /proc/pid/fd 。然後可以通過 ll 命令檢視具體檔案資訊,將有軟連線到被刪除檔案的檔案複製就可還原了。
第二種 使用extundelete之類基於inode的工具
針對 linux 下的 ext 檔案系統來說,常用的 linux 檔案刪除恢復工具有 debugfs、ext3grep、extundelete 等。extundelete 是乙個開源的資料恢復工具,支援 ext3、ext4 檔案系統,其官方站點位於目前最新穩定版本為 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已經被覆蓋,但是檔案物理儲存塊還未被覆蓋的檔案,可以嘗試一下這個方法,也許可以找回部分丟失檔案。
linux rm rf 刪除後的恢復
今天在寫 的時候執行make clean 本應該刪除的是某個變數下的所有檔案,結果因為我把變數名改了,此時,變數為空了,所以現在變成了刪除根目錄下的所有檔案。真是沉痛的教訓,辛辛苦苦寫了好多天的 testdisk 簡介 testdisk 是分割槽表恢復 raid 恢復 分割槽恢復的開源免費工具 te...
MySQL 資料刪除之後表檔案不變
在 mysql 8.0 版本以前,表結構是存在以.frm 為字尾的檔案裡。而 mysql 8.0 版本,則已經允許把錶結構定義放在系統資料表中了。引數innodb file per table 引數設定為 off 表示的是,表的資料放在系統共享表空間,也就是跟資料字典放在一起 引數設定為 on 表示...
在刪除了Oralce的undo檔案之後
oracle 資料庫用久了可能會碰到如下的錯誤 oracle error description ora 09817 write to audit file failed.linux error 28 no space left on device 這意味著oracle所在的伺服器已經無剩餘空間可用...