ext4文件系统数据恢复的方法总结

对于一个文件系统来说,物理盘上保存的信息包括两类,一类是元数据信息,存在于inode中,另一类就是实际的数据块,inode中保存有指向数据块的相关索引信息,这样一个文件只要找到inode,就可以索引到对应的数据块了。

实际工作中,可能会遇到不同类型的数据丢失问题,比如:

  1. 对于一个文件的写入操作没有落盘机器异常关机了,导致数据丢失
    这种情况,如果打开了ext文件系统的journal日志功能,那么对应的写入数据,还有一定可能会保存在journal日志中,那么就利用这其中的信息来进行恢复操作。

  2. 一个文件被误操作删除了
    当一个文件被删除时,实际上文件系统只是删除了对应inode,而实际文件的数据块还依然存在于物理盘上,只是我们不知道这些数据块之间的关系,无法确认哪些数据块拼接在一起属于某一个文件。不过对于小文件来说,它的数据都存在于同一个数据块上,那么只要扫描所有的块,根据特征分析即可恢复这种小文件,而对于大文件来说,恢复时涉及多个块之间的拼接关系,这就更加麻烦了。

这里有一个疑问,删除inode操作是只清除inode bitmap呢?还是会把inode中的数据都清除呢?如果只是清除了bitmap,那么对于数据恢复将变得更加简单,因为实际的inode还在,其中也还记录着对应的文件数据块信息,恢复时只要遍历找到该inode,就可以进一步找到文件的所有数据。

既然有这个好处,内核理应如此实现才对啊,然而现实并不是如此,我仅仅是站在数据容易恢复的角度来考虑问题,但是这样也带来了弊端,那就是数据安全问题,随便写一个应用程序就找到已经删除的文件,这实际上带有一定的数据安全隐患。所以较新的文件系统已经不这样做了。

fsck一致性检查修复

Fsck会对文件系统做一致性检查,所谓一致性检查的原理就是通过扫描所有的物理块,包括inode块和数据块,fsck会对每个块做状态记录,对于每个块来说,它要么是被inode索引的数据块,要么是一个空闲块。扫描完成后检查是否存在状态不对的块,并尝试修复它的状态。
一般使用如下命令:

fsck -y /dev/sda1

通过这个命令是可以一定概率上修复文件系统问题的。当文件系统的超级块损坏而无法挂载时,fsck可以使用备份块来恢复文件系统,需要使用-b选项指定备份超级块的块号。

extundelete恢复工具

常用的数据恢复工具之一,它可以支持特定文件,特定目录的删除恢复,同时还支持所有数据恢复,使用方法如下:

extundelete --restore-all  /dev/sda1

ext4magic恢复工具

Ext4magic是一个免费开源的数据修复工具,它基于extundelete和ext3grep工具进行了重构实现。利用的也就是前面提到的原理来恢复文件系统数据的。它会先检查journal日志尝试修复,如果不行那就扫描所有block块数据进行修复。安装后使用也很简单:

ext4magic -M /dev/sda1 -d recovery/

直接把对应盘的所有数据恢复到指定的目录中。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值