linux恢复rm命令,linux下rm删除与恢复

本文探讨了Linux ext3/4文件系统中文件删除的原理,指出删除文件并未立即清除数据,而是断开文件名与inode的关联。在特定情况下,通过日志文件journal有可能恢复已删除文件。然而,一旦数据块被覆盖,恢复将变得困难。此外,文章强调了数据备份的重要性,并介绍了如何在文件被进程调用时进行删除操作以及文件删除后的恢复可能性。
摘要由CSDN通过智能技术生成

最近一个新客户由于长期没做备份,再加上客户与之前的技术合作伙伴之间的一些不愉快。导致客户的整体linux系统被全部用rm删除。我们对这种技术人员的职业素养、道德品质和法律素养表示唏嘘,客户已经在第一时间进行了报案和立案工作,犯罪嫌疑人迟早会被绳之以法的。在唏嘘感叹的同时间,我们建议所有的企业第一时间要做好数据定时异地备份,下面介绍linux下的ext4文件系统删除原理。

警告:若数据块被覆盖,则无法恢复,第一时间问清楚是什么时候删除的数据,叮嘱不要继续再动了!

一、文件删除原理

在ext3/4文件系统中,inode索引节点除了存放文件属性还指向文件的block节点,是书的目录,block存放文件的实际数据,是书的每一页,文件的上级目录的block存放的是文件名及其inode节点编号,删除文件实际上是删除文件名和inode节点编号的关联以及inode节点内的指针信息,那么实际上,文件的block还在,加上ext3/4文件系统是日志文件系统,格式化时会分配一个固定大小的空间的日志文件journal,它记录创建和删除文件的记录,当删除一个文件,操作系统首先把文件inode信息和文件名称写入到journal,然后删除文件并清空inode原始数据指针。

二、有两种情况无法恢复

1)当新的数据写入到被删除文件占用的block后,原来的inode号就指向新的数据,那么这样是无法找回的。

2)当journal日志文件存满之后,会释放前面的空间,循环使用,存放最新的记录,如果删除文件的记录被覆盖,是恢复不了的。

三、恢复文件的原理

根据journal日志文件残留inode的信息,定位到相关目录,恢复残留inode对应的block。但日志文件恢复只适合小数据量的恢复,因为journal的空间有限,存放不了太多记录。对于大文件如oracle等数据库文件恢复采用逆向推算和数据文件本身特点来提取。

简单说,ext4中文件和目录包含元数据和实际数据两个部分,实际数据存储了文件的实际内容,元数据存储了文件的创建修改删除时间以及实际数据的地址。文件和目录的元数据由一个inode结构表示。所有的inode存储在inode数组中,根据序号访问。

Linux下文件删除的原理

Linux下控制文件真正被删除的计数器

Linux是link的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_count和i_link

i_count的意义是当前文件使用者(或被调用)的数量

当一个文件被某一个进程引用时,对应的这个值就会增加

i_nlink的意义是介质连接的数量(硬链接的数量)

当创建文件的硬链接的时候,这个值就会增加

可以理解为i_count是内存引用计数器,i_nlink是硬盘的引用计数器

rm命令原理

对于删除命令rm而言,实际上就是减少磁盘引用计数i_nlink。

Q:如果一个文件正在被某个进程调用,而用户却执行rm把文件删除了,那么会出现什么结果?当用户执行rm删除文件后,再执行ls或其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容,这又是为什么呢?

A:rm操作只是将文件的i_nlink减少了,如果没有其它的链接i_nlink就为0了。但是由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以执行rm操作,系统并没有真正的删除这个文件,只有当i_nlink和i_count都为0的时候,这个文件才会被真正的删除。也就是说,必须要解除该进程对该文件的调用,才能真正的删除。

Q:当文件没有被调用,执行了rm操作之后,还能找回被删除的文件吗?

A:rm操作只是将文件的i_nlink减少了,或者说置为0,实际上就是将inode的链接删除了,此时,并没有删除文件的实体(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果继续写入数据,那么新数据可能会被分配到被删除的数据的block数据块,文件就被真正的回收了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值