描述:某個網友說他在進行md5指紋對比某文件的時候,另外一個同事在另外一個窗口刪除了該文件,然后順嘴跟他說了下,這時候他意識到同事可能是誤刪除了,于是,他利用了以下辦法來進行解救:
操作順序如下:
1)網友的操作:
[root@C67-X64-A0 ~]# ls -l /test.img -rw-r--r-- 1 root root 2147479552 7月 29 15:18 /test.img [root@C67-X64-A0 ~]# du -sh /test.img 2.0G/test.img [root@C67-X64-A0 ~]# md5sum /test.img
2)網友同事的操作:
[root@C67-X64-A0 ~]# rm -rf /test.img [root@C67-X64-A0 ~]# ls /test.img ls: 無法訪問/test.img: 沒有那個文件或目錄 網友同事可能意識到誤操作了,立馬喊了網友,網友一看媽蛋,這文件我下了老半天的,你現在刪除不是捉死么!
3)網友立馬在自己的窗口使用 Ctrl+Z,立刻暫停 md5sum
[root@C67-X64-A0 ~]# md5sum /test.img ^Z [1]+ Stopped md5sum /test.img
這里利用的一個原理就是:如果有其他程序正在使用這個文件的話,Linux 不會真正刪除這個文件(即使執行了 rm 命令)。我們在刪除命令 rm 執行完之前暫停 md5sum,這樣 test.img 就一直會被 md5um 占用而不會真正被 rm 刪除。
4)開始恢復之路
[root@C67-X64-A0 ~]# jobs -l [1]+ 4254 停止 md5sum /test.img
使用 jobs 可以看到被暫停的 md5sum 的進程號4254,然后查看這個進程打開了哪些文件:
[root@C67-X64-A0 ~]# ls -l /proc/4254/fd 總用量 0 lrwx------ 1 root root 64 7月 29 15:31 0 -> /dev/pts/0 lrwx------ 1 root root 64 7月 29 15:31 1 -> /dev/pts/0 lrwx------ 1 root root 64 7月 29 15:31 2 -> /dev/pts/0 lr-x------ 1 root root 64 7月 29 15:31 3 -> /test.img (deleted) [root@C67-X64-A0 ~]# cp /proc/4254/fd/3 /test.img [root@C67-X64-A0 ~]# ls -l /test.img -rw-r--r-- 1 root root 2147479552 7月 29 15:36 /test.img
一次有驚無險的操作,數據得以恢復。
原創文章,作者:Net21-冰凍vs西瓜,如若轉載,請注明出處:http://www.www58058.com/26688