文件名是如何存储的?

Lou*_*eru 7 ntfs filenames

我注意到重命名文件不会改变它的哈希值。我还注意到创建一个空文件会给出一个零字节的文件,但它有一个文件名。

由于文件名似乎与文件一起跨设备传输,我想知道文件名究竟是什么?为什么可以在不改变哈希的情况下更改它,为什么它似乎不占用任何空间?

我想如果我了解它们是如何存储的,它就会回答这些问题。

ixe*_*013 12

在 NTFS 中,所有文件数据——文件名、创建日期、访问权限(通过使用访问控制列表)和内容——都作为元数据存储在主文件表中。在 Windows 世界中,您可能还听说过File Allocation Table。其他文件系统具有其他名称和结构。

所有文件系统都以这种方式工作。一定量的空间被保留,通常在磁盘的最开始,就在引导扇区之后。该空间包含一个数据结构,其中包含检索文件的信息。

主文件表不是文件。它只是有组织的数据。事实上,文件只是具有开头和大小的数据,存储在 MFT、FAT 或类似文件中。当您更改文件名时,您不会更改文件,只是主文件表中的一些字节。

由于名称和属性与数据不同,您可以将存储在 Linux 服务器上的文件下载到 Windows 机器上。传输的是数据,而不是元数据。您必须自己命名和选择文件的位置(尽管服务器和浏览器可以提示您原始文件名)。

  • 你的解释让我想知道 MFT 的大小是如何随时间变化的。[NTFS 如何为其主文件表 (MFT) 保留空间](http://support.microsoft.com/kb/174619) 提供了一些相关信息。我认为这很有趣:NTFS 保留 12.5% 的卷专供 MFT 使用,直到并且除非该卷的其余部分完全用完……如果未保留的空间已满,则用户文件和目录的空间开始被占用从 MFT 区域分配...如果 MFT 区域已满,则会从磁盘的其余部分分配用于新 MFT 条目的空间... (4认同)