百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux下恢复rm删除的文件(linux 恢复误删文件)

nanshan 2024-11-04 13:06 9 浏览 0 评论

导读

在日常的运维工作中,大部分OP都习惯性的经常rm -rf 命令用于文件目录的删除,通过命令“rm -rf”可以将任何数据直接从硬盘删除,并且没有任何提示,同时Linux下也没有与Windows下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的。所以当出现误操作时,很难快速的找回被删除的文件。

数据恢复工作选择

在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大,本文重点介绍extundelete的使用。

数据恢复原理

首先我们稍微复习一下计算机基础知识:

硬盘

硬盘是一种采用磁介质的数据存储设备,数据『物理意义上的』存储在若干个磁盘片上。在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector)。

主引导扇区和分区表

硬盘的0磁道0柱面1扇区是主引导扇区位,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。操作系统通过分区表把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,写入数据文件。

分区日志

分区日志系统是一个文件系统,用于修复由于计算机关闭不当而导致的任何不一致。这种关闭通常是由于电源中断或软件问题造成的。即记录了分区的数据读写操作。通过这些日志,可以知道分区中的历史操作。

数据存储

具体的数据存储原理内容比较多,这里不做过多的概述。为了便于理解,可在此理解为:

操作系统中的文件在硬盘的表现形式是在硬盘一片数据区域记录二进制信息,并由操作系统的一个指针指向该物理地址

而操作系统级别的『删除文件』,即删除这个『指针』

原来的物理地址内没有『指针』指向后,相当于被释放,当操作系统需要时,可以被复写上新的数据。

由此得知,extundelete 通过查阅分区日志,找到被删除的指针,告诉用户,可以尝试恢复哪些数据。但由于操作系统随时可以复写空余磁盘,所以如果要恢复的物理地址已经被改写,数据将无法找回。

解决方案演示

演示环境:

操作系统: CentOS 6

需要恢复的文件: /mnt/data1/tmpdir/testDelete/test.log

1.创建文件

2.删除文件

3.安装 extundelete文件恢复工具

执行命令: yum install extundelete -y

4.查询被删除文件所处磁盘

[root@master-worksvr testDelete]# df /mnt/data1/tmpdir/testDelete
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 142433064 129081532 6116360 96% /mnt/data1

5.卸载磁盘,保护现场

umount /dev/sda3
备注: 不卸载也可以,这样会导致磁盘可能会被其他的进程写入数据,从而抹掉原来的数据,建议卸载

6.获取磁盘根inode值

磁盘根目录的inode值,一般情况下为2

[root@master-worksvr testDelete]# ls -id /
2 /

7.查询可恢复的数据

extundelete /dev/sda3 --inode 2 

从上图可看出tmpdir 的 inode 是 2883585,继续根据tmpdir的inode查询

extundelete /dev/sda3 --inode 2883585

从上图可看出testDelete 的 inode 是 2941415,继续根据testDelete的inode查询

extundelete /dev/sda3 --inode 2941415

最终找到了被删除的文件,也就意味着test.log这个我们之前删除的文件,是可以被恢复出来的。

8.恢复数据

采用extundelete命令恢复数据:

1.恢复单个文件使用参数“--restore-file”,恢复单个目录使用参数“--restore-directory”,需要使用文件的相对路径。

2.文件恢复成功后,在执行extundelete命令的当前目录下会创建一个RECOVERED_FILES目录,用于存放恢复出来的文件。

实际操作:

[root@master-worksvr ~]# extundelete /dev/sda3 --restore-file /tmpdir/testDelete/test.log
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 1104 groups loaded.
Loading journal descriptors ... 32255 descriptors loaded.
Successfully restored file /tmpdir/testDelete/test.log
[root@master-worksvr ~]# cat ./RECOVERED_FILES/tmpdir/testDelete/test.log 
TestDelteFile
[root@master-worksvr ~]#
#若文件无法恢复,则会抛出: No files were undeleted.

extundelete还有其他很强大的功能在此就不演示,下面为extundelte命令相关参数的解释,可供参考:

命令格式: extundelete [options] [--] device-file
其中,参数(options)有:
--version, -[vV],显示软件版本号。
--help,显示软件帮助信息。
--superblock,显示超级块信息。
--journal,显示日志信息。
--after dtime,时间参数,表示在某段时间之后被删的文件或目录。
--before dtime,时间参数,表示在某段时间之前被删的文件或目录。
动作(action)有:
--inode ino,显示节点“ino”的信息。
--block blk,显示数据块“blk”的信息。
--restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。
--restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。
--restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。
--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。
-j journal,表示从已经命名的文件中读取扩展日志。
-b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
-B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

注意事项

服务器的数据一定要及时备份或做好容灾,防止丢失。希望大家都不要出现这样的悲剧。

若在实际操作过程有相关问题,欢迎和我一起探讨!

相关推荐

F5负载均衡器如何通过irules实现应用的灵活转发?

F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过irules编写强大灵活的转发规则,实现web业务的灵活应用。irules是基于TCL语法的,每个iRules必须包含...

映射域名到NAS

前面介绍已经将域名映射到家庭路由器上,现在只需要在路由器上设置一下端口转发即可。假设NAS在内网的IP是192.168.1.100,NAS管理端口2000.你的域名是www.xxx.com,配置外部端...

转发(Forward)和重定向(Redirect)的区别

转发是服务器行为,重定向是客户端行为。转发(Forward)通过RequestDispatcher对象的forward(HttpServletRequestrequest,HttpServletRe...

SpringBoot应用中使用拦截器实现路由转发

1、背景项目中有一个SpringBoot开发的微服务,经过业务多年的演进,代码已经累积到令人恐怖的规模,亟需重构,将之拆解成多个微服务。该微服务的接口庞大,调用关系非常复杂,且实施重构的人员大部分不是...

公司想搭建个网站,网站如何进行域名解析?

域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转...

域名和IP地址什么关系?如何通过域名解析IP?

一般情况下,访客通过域名和IP地址都能访问到网站,那么两者之间有什么关系吗?本文中科三方针对域名和IP地址的关系和区别,以及如何实现域名与IP的绑定做下介绍。域名与IP地址之间的关系IP地址是计算机的...

分享网站域名301重定向的知识

网站域名做301重定向操作时,一般需要由专业的技术来协助完成,如果用户自己在维护,可以按照相应的说明进行操作。好了,下面说说重点,域名301重定向的操作步骤。首先,根据HTTP协议,在客户端向服务器发...

NAS外网到底安全吗?一文看懂HTTP/HTTPS和SSL证书

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry搭好了NAS,但是不懂做好网络加密,那么隐私泄露也会随时发生!大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数...

ForwardEmail免费、开源、加密的邮件转发服务

ForwardEmail是一款免费、加密和开源的邮件转发服务,设置简单只需4步即可正常使用,通过测试来看也要比ImprovMX好得多,转发近乎秒到且未进入垃圾箱(仅以Mailbox.org发送、Out...

使用CloudFlare进行域名重定向

当网站变更域名的时候,经常会使用域名重定向的方式,将老域名指向到新域名,这通常叫做:URL转发(URLFORWARDING),善于使用URL转发,对SEO来说非常有用,因为用这种方式能明确告知搜索引...

要将端口5002和5003通过Nginx代理到一个域名上的操作笔记

要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...

SEO浅谈:网站域名重定向的三种方式

在大多数情况下,我们输入网站访问网站的时候,很难发现www.***.com和***.com的区别,因为一般的网站主,都会把这两个域名指向到同一网站。但是对于网站运营和优化来说,www.***.com和...

花生壳出现诊断域名与转发服务器ip不一致的解决办法

出现诊断域名与转发服务器ip不一致您可以:1、更改客户端所处主机的drs为223.5.5.5备用dns为119.29.29.29;2、在windows上进入命令提示符输入ipconfig/flush...

涨知识了!带你认识什么是域名

1、什么是域名从技术角度来看,域名是在Internet上解决IP地址对应的一种方法。一个完整的域名由两个或两个以上部分组成,各部分之间用英文的句号“.”来分隔。如“abc.com”。其中“com”称...

域名被跳转到其他网站是怎么回事

当你输入域名时被跳转到另一个网站,这可能是由几种原因造成的:一、域名可能配置了域名转发服务。无论何时有人访问域名,比如.com、.top等,都会自动重定向到另一个指定的URL,这通常是在域名注册商设...

取消回复欢迎 发表评论: