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

相关推荐

  • linux终端变量设置,文件系统,man使用说明,文件类型

    一、定义终端提示符的变量 export PS1=’\e[32m[\e[33m\u\e[31m@\e[35m\h\e[36m\t\e[34m\#\e[31m\s\e[37m\W\e[32m]\$ ‘  `]# export 是个命令      PS1指终端提示符变量    &n…

    Linux干货 2013-06-16
  • shell编程之变量,数值计算,字符比较,文件测试小记

     变量     变量:能储存计算结果或能表示值抽象概念,其指向的内存空间中一段地址。        变量赋值:name=value    溢出:字符超过定义内存中间大小    变量类型:数据类型,存储的格式,参与的运算   &nb…

    Linux干货 2016-08-15
  • 基于Keepalived+Nginx实现高可用负载均衡

    练习贴,测试keepalived+lvs_dr高可用负载均衡

    2017-12-11
  • 详解LVM逻辑卷

       LVM逻辑卷管理 当os6中partprobe 命令不能同步分区完的分区信息,及用ll /dev/sd*、cat /proc/partation、lsblk看的设备分区内容和用fdisk -l 看到的信息不同步 所以用partx -a 设备名或者用partx -a –nr 分区号 设备名 其中表示n是设备名,r 是ran…

    Linux干货 2016-08-29
  • 马哥教育网络班21期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; ~]# fdisk &n…

    Linux干货 2016-08-30
  • shell脚本编程入门

    什么是shell脚本,其实,shell脚本就是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与命令(包含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能等这些命令的组合起来,以达到我们所想要的目的。 程序编程风格有两种: 过程式:以指令为中心,数据服务于指令。 对象式:以数据为中心,指令服务于数据。 过程…

    Linux干货 2016-08-18