标签:包含 lin pack com case 表示 proc hit 结果
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查看当前目录下的文件,选择任意一个进行执行(这里选择了一个安装的日志文件,利用tail命令实时追踪文件的追加内容,在不加操作的前提下会一直追踪,相当于执行)
在终端2执行删除install.log的命令
4、通过cp将fd中的3号拷贝回原来的路径,并查看,此时可发现恢复成功
恢复并不能一定成功,所以对文件的删除需要十分谨慎
参考来源:
https://blog.csdn.net/beyondblack/article/details/41494547
https://www.linuxidc.com/Linux/2018-03/151199.htm
标签:包含 lin pack com case 表示 proc hit 结果
原文地址:https://www.cnblogs.com/ssgeek/p/9220445.html