Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 文件系统存储其文件元数据的位置_File_Filesystems_Metadata - Fatal编程技术网

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

File 文件系统存储其文件元数据的位置,file,filesystems,metadata,File,Filesystems,Metadata,所以我知道一个文件是由它的数据和元数据组成的,元数据是关于它的信息(通常是名称、文件类型、创建和修改日期等) 我的问题是,这些信息到底存储在哪里。我知道它可以包含在文件、目录或数据库中,但对于Windows、Linux和MAC-OS文件系统,我似乎找不到这些信息……这取决于文件系统。例如,看看。对于Windows和Mac而言,这些信息中的大部分都是专有的 对于Windows,我可以肯定地说,已经为Linux编写了足够接近的NTFS文件系统驱动程序版本。你可以看看,还有一些文档,大部分是由Rich

所以我知道一个文件是由它的数据和元数据组成的,元数据是关于它的信息(通常是名称、文件类型、创建和修改日期等)


我的问题是,这些信息到底存储在哪里。我知道它可以包含在文件、目录或数据库中,但对于Windows、Linux和MAC-OS文件系统,我似乎找不到这些信息……

这取决于文件系统。例如,看看。

对于Windows和Mac而言,这些信息中的大部分都是专有的

对于Windows,我可以肯定地说,已经为Linux编写了足够接近的NTFS文件系统驱动程序版本。你可以看看,还有一些文档,大部分是由Richard'Flatcap'Russon()编写的

关于FAT文件系统的文档很久以前就公开了,目的是为开发人员和工程师提供大量信息,帮助他们开发闪存驱动器之类的东西。()

关于Linux发行版使用的Ext文件系统的文档可以在web上轻松找到。(Ext2:)

我不知道Mac使用了什么,但我敢打赌这是一种源自现有格式(可能是ext)的专有厌恶。这只是我的意见,不要把这当作事实

所有这些格式都有某种保存元数据的结构。该文件只是物理驱动器上某个位置的字节流。大多数文件系统都应该具有至少存储文件位置(通常是文件每个片段的起始集群)和文件大小的结构。其余的元数据由每个文件系统来实现

例如,FAT文件系统每个目录都有表,每个目录都存储有关其包含的文件的元数据。但它还有一个FAT表,用于保存文件系统中包含的每个文件的片段位置

NTFS文件系统有一个称为主文件表的大表,它为文件系统包含的每个文件(包括表本身)保存元数据记录。每个记录保存所有元数据,包括每个片段在物理驱动器上的文件位置。 但是,目录结构作为数据保存在目录文件记录中。但是,NTFS甚至有更多的结构来保存有关文件的信息,如USN日志或卷位图

要访问文件系统包含的元数据,您必须解析原始卷或使用操作系统API公开的函数。API通常不会提供有关元数据的所有信息。例如,Windows API将为您提供函数来遍历USN日志以查找有关特定文件的信息,但您无法直接获取文件的MFT属性


我必须再次强调,即使有这些专有文件系统上的大多数文档,您也是在黑暗中拍摄,因为这是他们的知识产权。我们现在拥有的一些文档(如果不是大部分的话)来自逆向工程。

它位于文件系统内部,文件系统不会公开原始数据。我认为这可能属于超级用户。如前所述,这是离题的。