在實際的工作中,朋友們可能會將linux伺服器上的檔案不小心誤刪除掉了。而且越是資歷老的工程師越容易犯這樣的錯誤,敲**的速度也是夠快,**rm -rf
乙個回車,然後就是打臉時刻 。新人操作檔案時往往戰戰兢兢、反覆確認,反而不容易出錯。如果你也是乙個有多年工作經驗的工程師,也給自己提個醒:淹死的都是會水的。我們需要區分兩種場景來進行誤刪除檔案的恢復:
第一種場景的資料恢復相對簡單一些。
第一種場景:被刪除的檔案正在被其他程序使用。我們先建立乙個獨立目錄testdel,用於完成我們的實驗。然後使用echo命令建立乙個檔案test-recovery.txt,放在testdel目錄下,檔案內容是:"test file delete recovery"。重點來了:我們使用命令tail來一直監聽這個檔案,表示這個檔案一直被tail程序監聽占用。
$ mkdir ./testdel;
$ echo "test file delete recovery" > ./testdel/test-recovery.txt;
$ tail -f ./testdel/test-recovery.txt;
此時我們新開啟乙個linux終端,完成檔案刪除操作,檔案刪除之後使用ls
命名在該目錄下檢視不到任何的檔案。
$ rm -fr ./testdel/test-recovery.txt;
$ ls -l ./testdel
下面我們來進行檔案的恢復,執行下文中的lsof命令,在其返回結果中我們可以看到test-recovery.txt (deleted)被刪除了,但是其存在乙個程序tail使用它,tail程序的程序編號是1535。
$ lsof | grep test-recovery.txt;
tail 1535 kafka 3r reg 253,2 26 34095906 /home/kafka/testdel/test-recovery.txt (deleted)
然後我們使用cd /proc/1535/fd
命令進入該程序的檔案目錄下,1535是tail程序的程序id,這個檔案目錄裡包含了若干該程序正在開啟使用的檔案。
我們看到檔名為3的檔案,就是我們剛剛「誤刪除」的檔案,所以我們使用下面的cp命令把它恢復回去。至此,有程序引用的檔案誤刪除恢復就完成了。
cp ./3 /home/kafka/testdel/test-recovery.txt;
第一種情況:當某個檔案正在被某個程式使用時,linux針對該檔案有兩個計數器
當以上兩個計數器都為0的時候,該檔案實際上就是屬於沒有程序使用它的狀態,就直接被刪除掉了。如果有程序使用它,那麼該檔案的i_count數值不為0,就可以在/proc/《程序id>/fd
目錄種找回來
第二種情況:此時沒有程序使用被刪除的檔案,被刪除的檔案的兩個計數器i_count和i_link此時都為0。這個時候我們要理解乙個概念
需要注意的是:存放資料塊block單元的檔案內容會一直存在麼?答案是否定的,因為該資料塊的內容被刪除了,所以該資料塊是可以被其他程序重新利用寫入資料的。所以,當你發現你誤刪除了非常重要的檔案時,你需要做的第一件事就是將磁碟從作業系統中unmout,或者停止所有程序向磁碟中寫資料。因為寫作資料操作,可能會占用覆蓋你"誤刪除檔案"所在資料塊,一旦資料塊被寫的資料寫入覆蓋,你的資料檔案就再也找不回來了。覺得對您有幫助的話,幫我點讚、分享!您的支援是我不竭的創作動力!。另外,筆者最近一段時間輸出了如下的精品內容,期待您的關注。
linux檔案誤刪除恢復
首先準備好工具debugfs 1 以唯讀方式掛載誤操作的硬碟 mount r n o remount r dev 若提示磁碟有程序或者使用者在操作,則使用fusr 檢視什麼在使用這個硬碟。若無重要程序則使用fuser k v m dev 乾掉。2 debugfs dev hda.3 檢視被刪除的檔案...
linux檔案誤刪除恢復
首先準備好工具debugfs 1 以唯讀方式掛載誤操作的硬碟 mount r n o remount r dev 若提示磁碟有程序或者使用者在操作,則使用fusr 檢視什麼在使用這個硬碟。若無重要程序則使用fuser k v m dev 乾掉。2 debugfs dev hda.3 檢視被刪除的檔案...
Linux 恢復誤刪除的檔案
目標內容 恢復linux下誤刪除的檔案 1.恢復linux下誤刪除的檔案 刪除檔案和資料夾 rm rf 檔名或目錄名 r 遞迴刪除 可以刪除目錄和目錄裡面的東西 f 強行刪除 ext4檔案系統上刪除檔案,可以恢復 extundelete windows恢復誤刪除的檔案 final data v2.0...