作为Steam的老玩家,可能都注意到了一个细节:游戏的安装过程往往耗时较长,但卸载却能在瞬息间完成。
例如,以现在的网络速度,在Steam上安装200G游戏可能需要1-2个小时,但卸载却仅需1-2秒。这到底是怎么回事呢?
Steam卸载界面
在Steam上点击卸载按钮后,虽然游戏从菜单中消失了,但游戏文件并没有被彻底删除,而是通过将存储区域标记为“空白”,从而让系统认为这些区域可以写入新数据。这种操作速度很快,因为它不需要实际移动或删除大量数据。
通俗点讲:Steam花了1-2秒告诉你的系统,这里已经没有东西了,你可以随便写入了。
再举一个例子:当你手动删除大文件时,会有提醒:文件过大无法放入回收站,是否彻底删除?这个操作非常地快,这就是相同的原理。
文件过大删除提示
而简单的文件恢复原理就是取消已经标记的“空白”,这样文件就能恢复回来了。而那些恢复不了的文件大概率就是被覆盖了。
windows文件删除原理
NTFS结构简介
在 Windows 操作系统中,常见的文件系统有 FAT(File Allocation Table)、NTFS(New Technology File System)等。NTFS 是目前广泛使用的文件系统,这里以NTFS举例分析。
NTFS 使用主文件表(MFT,Master File Table)来存储文件和目录的信息。MFT 中的每个记录(称为文件记录)大小通常为 1KB,它包含了文件的各种属性,如文件名、文件大小、时间戳、数据存储位置等。
对于文件的数据存储,NTFS 采用簇(cluster)的概念。簇是磁盘空间分配的最小单位,文件的数据被存储在一个或多个簇中。
文件删除过程
标记删除操作(NTFS)
当用户在 Windows 中删除一个文件时,系统首先会在 MFT 中对应的文件记录上进行标记。这个标记通常是将文件记录中的一个特定字段(如 “已删除” 标志位)进行设置。例如,文件记录中的一个字节可能会从表示 “正常” 状态的值变为表示 “已删除” 状态的值。
系统并不会立即清除文件的数据内容。文件的数据所占用的簇仍然保留在磁盘上,只是这些簇被标记为可以被重新使用。这就好比在图书馆中,一本书被标记为 “已废弃”,但书的内容(数据)还在书架(磁盘)上,只是书架位置(簇)可以被用来放置新的书(新的数据)。
目录项处理(NTFS)
对于文件所在的目录,其目录项也会被更新。目录项是存储在目录文件中的记录,用于记录文件名和对应的文件记录在 MFT 中的位置等信息。当文件被删除时,目录项可能会被部分清除或者标记为无效。
例如,文件名可能会被删除或者用特殊字符填充,文件记录在 MFT 中的索引位置可能会被清除,这样在正常的目录浏览操作中就不会再显示这个文件。