文件系统存储文件元数据的位置

6
我知道文件由数据和元数据组成,元数据包含有关文件的信息(通常是文件名、文件类型、创建和修改日期等)。
我的问题是这些信息究竟存储在哪里。我知道它可以包含在文件内部、目录中或数据库中,但是对于Windows、Linux和MAC-OS文件系统,我似乎找不到这些信息...

它在文件系统内部,文件系统不会暴露原始数据。 - SLaks
我认为这可能更适合在SuperUser上发布。按照现有的写法,它在这里是不符合主题的。 - Dan Is Fiddling By Firelight
3个回答

5
在 Windows 和 Mac 上,大多数关于文件系统的信息都是专有的。对于 Windows 来说,我可以肯定地说,已经编写了足够接近 NTFS 文件系统驱动程序的 Linux 版本。你可以查找相关文档,其中大部分是由 Richard 'Flatcap' Russon(http://www.flatcap.org/ntfs/)编写的。早在很久以前,关于 FAT 文件系统的文档已经公开发布,意图为在闪存驱动器等设备上工作的开发人员和工程师提供充足的信息(http://msdn.microsoft.com/en-us/library/windows/hardware/gg463080.aspx)。Linux 发行版使用的 Ext 文件系统的文档可以很容易地在网络上找到(Ext2:http://www.nongnu.org/ext2-doc/ext2.html)。我不知道 Mac 使用的是什么,但我敢打赌它是从现有格式(可能是 ext)派生出来的某种专有混合物。这只是我的观点,不要把它当成事实。
所有这些格式都有一些结构来保存元数据。文件只是物理驱动器上某个位置的一串字节。大多数文件系统应该都有一个结构来存储至少文件的位置(通常是文件每个片段的起始簇)和文件的大小。其余元数据由每个文件系统实现。例如,FAT 文件系统中每个目录都有表格,并且每个目录都存储有关其包含的文件的元数据。但它还有一个 FAT 表格,用于保存文件系统中包含的每个文件的片段位置。
NTFS 文件系统有一个称为主文件表的大表格,用于保存文件系统中包含的每个文件的元数据记录,包括表格本身。每个记录都包含所有元数据,包括每个片段在物理驱动器上的文件位置。然而,目录结构存储为目录文件记录中的数据。但是,NTFS 还有更多结构来保存有关文件的信息,例如 USN 日志或卷位图。
要访问文件系统包含的元数据,你可以解析原始卷或使用操作系统 API 公开的函数。API 通常无法提供有关元数据的全部信息。例如,Windows API 将为您提供迭代通过 USN 日志查找特定文件信息的函数,但您无法直接获取文件的 MFT 属性。

再次强调,即使拥有这些专有文件系统的大部分文档,由于它们是知识产权,因此您仍然在盲目尝试。我们现在拥有的一些文档来自反向工程。


0

0

系统#元数据 显示哪些文件系统存储元数据信息的详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接