Linux ext3文件系统恢复被删文件

大家都知道,在linux系统中是没有回收站的概念的,一旦rm命令删除某个文件之后,就找不回来。不过其实这时还是有救的,之前大概清楚个概念,知道有救,但如何救就没怎么详细去了解了。那么这次我们来实际操作下。

其实为什么说还有救呢?说这个之前需要对ext3文件系统有个大概的了解。

在ext3文件系统中我们创建一个文件时,它首先会在ext3文件系统的inode表申请个inode号,然后再将文件的信息以及数据写入。那么inode号又是什么呢?

inode号里面包括两部分,一个是metadata,即是元数据,简单理解就是这个文件的文件名,大小,权限,访问时间等等,也就是除了这个文件的内容数据之外的信息。

如图,创建了一个新文件“testfile”,我们可以用stat命令来查看它的信息;

Linux ext3文件系统恢复被删文件



另一个是一个 pointer 指针。该指针指向真正的数据存放的block数据区。所以通常在我们查看一个文件内容时,我们通过文件名找到对应的inode号,然后再通过这个inode号里面的指针,再找到真正的数据。

ext3文件系统恢复被删文件



而一个文件对应一个inode号,无论文件小到1,2K还是大到1,2GB都一样。在我们创建文件系统时,就会自动创建inode表,我们的inode号也就属于,来自于这个inode表。当然默认的inode表也是有大小的。达到了默认的上限值后,我们就无法创建文件咯。

我们可以通过“df -i”这个命令去查看,每个文件系统的inode的使用情况。通常按照默认的划分都够用了。当然如果你的服务器专门处理些小邮件,小文件的,你可以适当调整inode表的大小,让它更大一些。

如图,我们可以看到各文件系统的inode的总数量,以及使用了多少,剩余多少,以及占用的百分比;

ext3文件系统恢复被删文件



那么当我们执行命令,“rm -f testfile” 时,这时其实删除的只是对应这个文件的文件名与其inode的关联,数据其实还在,同时这个文件之前所占用的inode号被标记为可用状态,所以这个使用就不要再创建新的文件了,也就是对这个文件系统不要做任何动作,我想这个大家也都清楚。因为如果再创建新的文件,在ext3文件系统中,新的文件会复用之前被标记为可用状态的inode号,而这时你的数据也就岌岌可危了。

ext3文件系统恢复被删文件

ext3文件系统恢复被删文件



如上图,test文件inode号为98315,而删除之后,再建立个新的文件,它的inode号使用了之前空余出的相同的inode号。当然这个在不同文件系统是不同的,例如在RedHat的GFS文件系统中,被删的文件的inode号是会保留下来的,新的文件会用新的inode号。当然在GFS中也可以通过命令的形式去清空无效被删的inode号,将其还原成可被用的状态。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/19997.html