Linux中找回误删除的文件

作为一个多用户、多任务的Linux操作系统,会出现在没有备份的情况下将一些用户文件误删的情况,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。在误删后及时发现情况进行一些恢复工作,一定程度上还是有可能找回数据的。

 

Case 1:没有任何操作的情况下,单纯的将某个文件删除

原理:在Linux系统中,任何一个文件存入硬盘都是分为存放文件的inode号和block,真正存放数据的是文件的block。在做删除操作时,实际就是减少磁盘引用计数i_nlink只是,如果没其它的链接i_nlink就为0了。换言之就是将文件名到inode的链接删除了,但是文件的block依然保留。直到有数据重新写入硬盘中的时候,才会覆盖掉原来文件的内容,在这之前,还是有可能通过手段进行恢复的。

1、配置EPEL的软件仓库,EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为"红帽系"的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。先执行命令yum repolist检查是否安装了epel的源,此处已经安装,如果没有安装,执行命令yum install epel-release –y进行配置仓库的工作。

2、安装extundelete恢复软件yum install extundelete –y

3、事先知道删除文件的名称,可以通过文件的名称来进行恢复。

3.1模拟环境:在当前目录下查看所存在的文件,删除install.log

3.2执行命令extundelete --restore-file '/root/install.log' /dev/sda2进行恢复,确认y,恢复成功后会提示。并在当前目录下自动生成一个名为RECOVERED_FILES的目录

3.3进入到RECOVERED_FILES目录并查看目录下的文件,可以发现install.log已经恢复成功

4、如果不知道删除了哪些文件,即不知道删除文件的名称,可以通过文件的inode来进行恢复。

4.1模拟环境:删除install.log.syslog文件

4.2 执行命令ls -ild .查看当前目录即root用户的家目录的inode号

4.3 执行命令extundelete /dev/sda2 --inode 1048577从当前目录进行扫描,根据扫描结果,发现删除的文件install.log.syslog的inode号为1048579

4.4 extundelete /dev/sda2 --restore-inode 1048579进行恢复

4.5 同样在当前目录下自动生成一个名为RECOVERED_FILES的目录,进入到RECOVERED_FILES目录并查看目录下的文件,可以发现install.log已经恢复成功

 

需要注意的是:这种恢复方法具有偶然性,通常需要卸载所挂载的相应磁盘避免数据的重写,因为系统后台有很多进程在运行,所示有可能覆盖掉其内容,提示报错。恢复失败

 

Case 2:多个用户通过终端登录到Linux系统进行操作,当某个用户正在执行或编辑某个文件,恰好此时另一个用户删除了该文件

原理:正在执行或编辑某个文件的用户在对该文件进行操作时,系统是将该文件调入到内存中进行相关操作,但删除文件的用户只是将硬盘上的文件进行了删除,可以使用lsof命令通过从内存再调回硬盘的方式进行恢复。

  1. 模拟环境,用同一个用户通过两个终端(1和2)登录到Linux系统

在终端1查看当前目录下的文件,选择任意一个进行执行(这里选择了一个安装的日志文件,利用tail命令实时追踪文件的追加内容,在不加操作的前提下会一直追踪,相当于执行)

在终端2执行删除install.log的命令

  1. 使用命令lsof|grep –i delete查看删除的文件信息

  1. 通过查找proc目录下对应的pid目录(/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件,在相应进程的/proc/$pid/fd 目录下存放了此进程所有打开的fd,fd为文件描述符),可以看到删除的install.log文件标记

4、通过cp将fd中的3号拷贝回原来的路径,并查看,此时可发现恢复成功

 

恢复并不能一定成功,所以对文件的删除需要十分谨慎

参考来源:

https://blog.csdn.net/beyondblack/article/details/41494547

https://www.linuxidc.com/Linux/2018-03/151199.htm

Linux中找回误删除的文件的更多相关文章

  1. Linux恢复误删除的文件或者目录(转)

    linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的. 那么问题来了: 对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢? 答案当然是否定的,对于误删的文件 ...

  2. Linux恢复误删除的文件或者目录

    文章转载自:https://www.jianshu.com/p/662293f12a47 linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的. 那么问题来了: 对于li ...

  3. 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件

    高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...

  4. linux下恢复误删除的文件方法(ext2及ext3)

     linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,d ...

  5. linux下rm误删除数据库文件的恢复方法

    在linux redhat 5.4版本,rm误删除数据库文件的恢复过程分享.测试没有问题,可用. 1.首先测试rm 误删除数据库文件 [oracle@primary dbwdn]$ ll total ...

  6. 恢复Linux下被误删除的文件(笔记)

    恢复Linux下被误删除的文件 [root@xuegod63 ~]# mount /dev/cdrom /mnt/ 分一个区:sda4  查找:extundelete 分一个区:sda4  [root ...

  7. 如何在Linux上恢复误删除的文件或目录

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了.linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分 ...

  8. 如何恢复 Linux 上删除的文件,第 1 部分

    来源:http://www.ibm.com/developerworks/cn/linux/l-cn-filesrc/ 原理及普通文件的恢复 要想恢复误删除的文件,必须清楚数据在磁盘上究竟是如何存储的 ...

  9. 避免Linux上错删文件

    前言 在linux上我们常见的问题就是一个操作不小心误删除文件,而且在linux想要恢复文件没这么简单.只有当每次删除之后才后悔莫及,参考windows中最常见的做法就是给系统装一个回收站,让每次删除 ...

随机推荐

  1. QuickText for Notepad++

    昨刚投入新欢Notepad++,思路如泉涌,码代码也不累了,一口气用她码了两篇文- 今再接再厉,继续.QuickText严格说来算不上什么神器级插件,也仅只是一个缩写快捷输入的插件而已.可用得好,那效 ...

  2. 第十七章 OAuth2集成——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题,OAuth就是干这个的,OAuth2是OAut ...

  3. sonar:soanrqube接口api

    背景: jenkins+sonar集成了代码扫描,但是发出的邮件不管项目质量是通过还是失败,每次邮件的标题都是jenkins的构建状态,所以需要获取sonar中该项目的扫描结果. 解决: 在sonar ...

  4. 案例一:利于Python调用JSON对象来实现对XENA流量测试仪的灵活发包测试,能够适应Pair,Rotate,1-to-Many等多种拓扑模型

    硬件:XENA Valkyrie 或 Vantage主机,测试板卡不限,本方法适用于其100M~400G所有速率端口 环境配置:Python 3 实现功能: 1.控制流量仪进行流量测试,预定配置的流量 ...

  5. SecureCRT 配色方案

    整体效果: 一:Options -- Global Options 1.Normal colors     2.Bold colors 二 :Options -- Session Options 1. ...

  6. Spring使用小结

  7. Word 英语单词前面的汉字间距变大、Word 英文断词

    1. 前言 在写文档时,在用word穿插敲汉字和英语时,会出现英语单词前面的汉字间的间距突然变大的情况,如何解决? 2. 步骤 1.选中间隙变大的段落,然后右键点击段落 2.然后点击中文版式,把允许西 ...

  8. 题解 CF437C

    基本思路---贪心 既然要求最小代价,当用一定顺序删除时代价一定最小,不难发现,每次都删去x,y中最小的,最后的总代价业一定最小! 因此就可以写出下面的简单的代码 代码 #include<ios ...

  9. SpringBoot exception异常处理机制源码解析

    一.Spring Boot默认的异常处理机制 1:浏览器默认返回效果 2:原理解析 为了便于源码跟踪解析,在·Controller中手动设置异常. @RequestMapping(value=&quo ...

  10. QMetaMethod 获取成员函数的元信息

    在上一篇中,我们将的是QMetaEnum类,它可以获得一个类中由Q_ENUM宏或Q_FLAG宏声明的枚举类型的元信息.同样,QMetaMethod类是用来获取成员方法的元信息的一个类.通过该类,我们可 ...