操作系统如何删除数据?(Linux / Windows)

操作系统如何删除数据?(Linux / Windows)

我的问题很简单:操作系统(Linux 或 Windows)如何从我的硬盘中删除数据?

我可以想象两种方法:

  1. “物理方式”:通过将数据的内存地址全部置零来真正删除数据。例如,如果我硬盘上的某个数据看起来是这样的,1010...010那么之后它将看起来像0000...000

  2. 保留数据但允许覆盖。

答案1

谈论“数据”太宽泛了,但很明显你实际上是在谈论文件。您需要知道文件通常存储在文件系统中。尽管存在差异,但这通常意味着存在路径的树结构,表示文件或目录,并且文件在存储其内容的硬盘上分配有空间。

诸如rm简单地删除文件(即树中的条目)之类的命令:它们将父目录标记为少了一个子目录。在文件所在的地址以及文件内容所在的位置,没有任何变化。

但是,也有一些命令(例如shred)实际上会覆盖文件的内容,因此(理想情况下)无法恢复。这实际上比前者更难,因为不能保证使用相同的扇区来存储覆盖数据,并且因为物理上,磁盘上的磁性数据不仅仅是二进制的。此外,此类工具不会简单地将数据清零,而是使用模式或随机数据多次覆盖数据,从而使其在物理上更难恢复。

因此,您提到的两个选项都有,但日常的删除只是删除指向实际数据的指针。

答案2

您几乎已经回答了自己的问题。当操作系统删除时,它会将文件使用的空间标记为“可重复使用”。更安全的“删除”将覆盖文件块。“快速”和“完整”磁盘格式也是如此

答案3

第二种方法。硬盘上的文件系统有一个主文件表,这基本上是一个索引,它告诉哪个扇区保存哪个文件。如果删除了某个文件,则该表的条目将被删除,扇区可用于新文件。旧数据仍然存在,除非被覆盖,否则可以恢复。

相关内容