linux手誤rm可能不需要跑路
對于linux下誤刪的文件,我們是否真的無法通過軟件進行恢復呢?
誤刪文件還原可以分為兩種情況
一種是刪除以后在進程存在刪除信息
一種是刪除以后進程都找不到,只有借助于工具還原。
今天只分析文件被刪除后,相關進程還存在的情況
這種一般是有活動的進程存在持續標準輸入或輸出,到時文件被刪除后,進程PID依舊存在。這也是有些服務器刪除一些文件但是磁盤不釋放的原因
案例演示
> vim rumenz.txt 123 //保存退出 > cat rumenz.txt 123
目的是讓rumenz.txt被刪除后,進程依然存在
> tail -f rumenz.txt
> rm -f rumenz.txt
lsof查看刪除的文件進程是否還存在。
如沒有安裝請自行yum install lsof或者apt-get install lsof
> lsof | grep delete | grep rumenz tail 10222 root 3r REG 253,1 4 70911074 /root/test/rumenz.txt (deleted)
進程ID是10222,從上面可以看出,當前文件狀態為已刪除(deleted)
/proc/10222/fd:進程操作的文件描述符目錄
> cd /proc/10222/fd > ls -al dr-x------ 2 root root 0 May 11 21:41 . dr-xr-xr-x 9 root root 0 May 11 21:41 .. lrwx------ 1 root root 64 May 11 21:41 0 -> /dev/pts/1 lrwx------ 1 root root 64 May 11 21:41 1 -> /dev/pts/1 lrwx------ 1 root root 64 May 11 21:41 2 -> /dev/pts/1 lr-x------ 1 root root 64 May 11 21:41 3 -> /root/test/rumenz.txt (deleted) lr-x------ 1 root root 64 May 11 21:41 4 -> anon_inode:inotify
開始恢復文件
> cp 3 /root/test/rumenz.txt > cat /root/test/rumenz.txt 123
當程序運行時,操作系統會專門開辟一塊內存區域,提供給當前進程使用,對于依賴的文件,操作系統會發放一個文件描述符,以便讀寫文件,當我們執行rm -f刪除文件時,其實只是刪除了文件的目錄索引節點,對于文件系統不可見,但是對于打開它的進程依然可見,即仍然可以使用先前發放的文件描述符讀寫文件,正是利用這樣的原理,所以我們可以使用I/O重定向的方式來恢復文件。
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。