Linux误删大文件的一个可能解救办法

描述:某个网友说他在进行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

(0)
Net21-冰冻vs西瓜Net21-冰冻vs西瓜
上一篇 2016-08-02 10:56
下一篇 2016-08-02 10:56

相关推荐

  • 8.5文本处理工具及正则表达式

    一、各种文本工具     文件查看     命令:cat,tac,rev         cat optiong file       &n…

    Linux干货 2016-08-10
  • 08.02 笔记总结

    1. newgrp 用来临时切换主组。    root 切换, 不需要组密码。    而普通用户切换是需要组密码的。    newgrp 组名  用来切换当前用户的组信息 2. pwunconv     //  将密码的密文复制到/etc/passw…

    Linux干货 2016-08-08
  • RAID(重要)

    RAID   RAID(Redundent Array of Independent Disk):独立的冗余磁盘阵列,目的是为了结合多个物理驱动器组成单个单元,提高了磁盘的性能或保证数据冗余。RAID能够防止硬件的故障导致数据丢失,但是不能防止人为操作,软件故障、恶意软件感染等造成的数据丢失,因此不能替代备份。 分类有:硬件实现RAID(一是外接式磁盘阵列柜…

    Linux干货 2016-08-30
  • 循环的特殊用法及函数

    while特殊用法 while read 变量名;do 循环体 done<文件路径(将文件中的每一行依次读入循环体,赋值给变量)   (())可以实现C语言风格的变量操作 for循环特殊格式 for((控制变量初始化;条件判断表达式;控制变量修正表达式)) do 循环体 done 控制变量初始化仅在循环开始时执行一次,进行条件判断成立后执行循…

    Linux干货 2016-08-21
  • MAN手册各章节功能介绍及快捷键位详细说明

    MAN手册各章节功能介绍及快捷键位详细说明 M21-陆东贵 Man命令的作用:获取外部命令的使用帮助信息; 使用方法:]#  man  COMMAND        选项:        -M /PATH/TO/SOME…

    Linux干货 2016-10-18
  • sed的模式匹配用法探讨

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1405753 [root@sunsky Desktop]# cat sunsky a b c d e f [root@sunsk…

    Linux干货 2016-08-15