NTFS 文件系统上的“rm”与 Windows 自己的实现有何不同?

16 filesystems ntfs trash

我有一个带有 NTFS 文件系统的外部 USB 磁盘。

如果我从 Windows 中删除一个文件并运行几个“取消删除”实用程序之一(例如 TestDisk),我可以轻松恢复该文件(因为“它仍然存在,但被标记为已删除”)。

如果我从 Linux 中删除该文件,则没有任何实用程序(除非我使用基于深度搜索签名的实用程序)可以恢复该文件。为什么?Linux 的 NTFS 文件系统代码中 unlink 是如何实现的?看起来它不仅“将其标记为已删除”,而且还擦除了一些磁盘结构,是这种情况吗?

小智 8

出于好奇,我查看了 ntfs3g 源代码。

中似乎ntfs_delete(...)定义了一个函数dir.c,它执行删除操作。

它肯定会从文件系统结构中删除所有已删除的文件/目录的元数据。

由于没有微软自己版本的源代码,我只能尝试猜测它是如何执行删除的。

看来,Microsoft 仅将 MFT 条目标记为未使用,因为取消删除实用程序能够恢复已删除文件的位置和名称。