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


16

我有一个外部USB磁盘,上面装有NTFS文件系统。

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

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


2
@Jay silly_evarlast Wren您可能是正确的,我将尝试使用serverfault。我用于测试此行为的系统是ubuntu,因此这可能与ubuntu相关。

您可以浏览ntfs-3g的源代码,看看是否有任何有关您的问题的信息。
马丁·乌丁2011年

也许也可以问ntfs-3g开发人员(他们知道NTFS的工作方式和实施方式)。
2011年

Answers:


7

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

似乎在中ntfs_delete(...)定义了一个函数dir.c,用于删除。

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

由于没有Microsoft自己版本的源代码,因此我只能尝试进行有根据的猜测,以了解它如何执行删除操作。

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


3

我不知道Windows和NTFS的特殊性,但是在Unix / Linux文件管理器GUI和Mac OS X Finder上执行此操作的常用方法是不删除文件,而是将其移动到名为Trash的特殊隐藏文件夹中(或类似)。undelete命令从该“废纸folder”文件夹中检索文件。

rm 只需按照用户的要求删除文件,而无需打扰垃圾箱文件夹。


谢谢,我一直在寻找这种行为的解释!
jcora 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.