描述:某个网友说他在进行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.178linux.com/26688