如何在Linux中删除文件

时间:2020-03-21 11:44:04  来源:igfitidea点击:

尽管我们每天都会在系统上创建,删除,修改许多文件,但是在执行此简单操作后,系统仍会执行许多操作。
每当删除或者创建文件时,操作系统都会在文件系统上执行不同的操作。

在这篇文章中,我们将介绍和比较以下内容。

  • 如何在ext2文件系统中删除文件
  • 如何在ext3文件系统中删除文件

从上图可以清楚地看到,索引节点,其结构和块指针仍然存在。
但是,将索引节点和存储数据的块仅标记为未使用,以便可以重复使用此索引节点号和数据块。

因此,我们只需使用inode结构中包含的信息就可以轻松恢复数据。

我们将在我们即将发布的一篇文章中讨论用于恢复单个文件的数据的工具。

icat工具可用于恢复已删除的文件,并且如果不重写块,可以非常轻松地完成。
这就是为什么人们建议在删除某些文件并要恢复后立即卸载文件系统的原因。

现在,让我们再次删除ext3文件系统中的同一music.mp3文件,并查看inode的结构如何变化。
Ext3文件系统处理文件删除的方式与ext2文件系统截然不同。

现在,我们需要注意一个事实,在ext3文件系统中,每当删除文件时,操作系统会将size,块指针(直接,间接,双间接,三重间接)设为零。
将ext3文件系统中的inode中的字段清零的过程使数据恢复部分变得更加棘手。

由于大小为零,并且索引节点中存在块指针,因此用户无法准确检测数据的开始块和数据的结束块。

[root@theitroad1 ~]# istat /dev/sda1  3470028
inode: 3470028
Not Allocated
Group: 106
Generation Id: 1712167956
uid/gid: 0/0
mode: rrw-r--r-
size: 0
num of links: 0

Extended Attributes  (Block: 3474438)
security.selinux=root:object_r:user_home_t:s0

Inode Times:
Accessed:       2012-11-12 18:42:48 (IST)
File Modified:  2012-12-03 14:07:49 (IST)
Inode Modified: 2012-12-03 14:07:49 (IST)
Deleted:        2012-12-03 14:07:49 (IST)

Direct Blocks:

上面显示的示例是已删除文件的istat输出。
我们可以清楚地看到,链接的大小,数量,uid和gid都设置为零,并且索引节点号也设置为未分配。

我已将TSK工具中的istat实用程序用于上述输出。
这是用于法医分析的有趣工具(我将在TSK工具上做专门的文章)。

即使我们已删除文件的可用索引节点号,也可以恢复该文件。
(我们可以从文件系统的日志中获取索引节点号。