Windows中如何存储文件元数据?


13

(我使用的是Windows XP,但我猜它在所有最新版本的Windows中都是类似的。)

例如,当您创建一个新的文本文档时,您会在其属性中发现它的大小为0字节。零字节表示没有信息。没有数据。
但是,该文件仍具有一些名称,它仍可以带有上次访问,修改和创建的日期。无论是否为隐藏文件,是否为只读,它都承载信息。

那么所有元数据都存储在哪里?


这里没有魔术。:这里阅读这些答案 stackoverflow.com/questions/4954991/...
HighTechGeek

很久以前,我记得我曾经有一种病毒,它以某种方式破坏了我PC中的几个文件,使它们看起来大小约为100GB。他们每个人。在我的40GB硬盘上。所以一定有某种魔术……
-D

Answers:


11

您已经学会了硬盘包含文件,但这不是全部。实际上,硬盘驱动器包含一个非常大的数字,用很多单个位表示。但是这种解释对您和您的计算机都没有任何意义,因为处理单个大数并不常见(我在说的是“真正大数”)。取而代之的是,计算机将其拆分为较小的“字”(8位,16位,32位或其他),并像这样使用。尽管如此,那只是一堆单词(假设8位单词,即字节)。

现在,该驱动器已分区。我已经解释了为什么在这个答案中分区是一个好主意:

一般而言,无需分区即可使用驱动器。大多数Pendrive都是这样工作的。但是使用分区有很多优点,仅举其中一些:

  • 您可以使两个操作系统位于同一硬盘驱动器上,并且不会互相干扰。每个分区都将其分区视为逻辑驱动器,除非您告知,否则不会与其他分区混淆。
  • 您可以在逻辑上分离数据。如果一个分区由于某种原因损坏,其他分区很可能会保持完整。
  • 使用分区比使用多个较小的硬盘驱动器更好,因为系统更安静,能耗更低,并且可以调整大小,删除或移动它们等。
  • 您可以将硬盘驱动器的某些部分用于某些特殊目的。

现在,每个分区都有自己的文件系统。Windows的现代版本使用NTFS,但外部媒体或旧分区支持FATFAT32exFAT。日常使用的Linux安装通常使用ext文件系统,而ext4是最新的文件系统。

文件系统定义了文件在磁盘上的物理放置方式。您可以这样想:如果您有一本10000页的书,没有任何章节,页码或换行符,那么将很难使用。当然,页码和章节标题会占用页面上的一些空间,但是它们使使用本书变得更加容易和快捷。如果要跳到第42章,只需在目录中查找即可。然后翻阅本书,直到找到所需的章节。您的文件是章节,而文件系统是书。文件系统元数据(例如文件边界,文件名等)也占用空间,但是它的空间相对较小,并且使工作更快。

如果您的“章节”为空,那么它仍然可以具有标题或页码,对吗?空文件包含零字节的数据。元数据会占用空间,但它不是文件的一部分,而是文件系统的一部分。否则,您会在文本文件中看到文件名吗?

顺便说一下,这就是为什么早期版本的DOS只接受8.3名称的原因-为文件名保留的空间非常有限。NTFS允许使用255个字符长的文件名[1]


在您的评论中再说一句话:

我曾经有一种病毒,以某种方式破坏了我PC中的几个文件,因此它们看起来大小约为100GB。他们每个人。在我的40GB硬盘上。所以一定有某种魔术... :-D

借助一个名为“ 稀疏文件”的功能,完全有可能拥有比硬盘更大的有效文件。Hennes在对这个问题的评论中对这些有很好的解释:

想象一下一个能够容纳100页的活页夹。如果您将该活页夹用作常规文件,则可以插入100页。您可以读取全部100。您可以写入全部100。现在想象一个稀疏的资料夹。您插入写的第一页“页面1:内容A”。然后插入第二个页面,写上“页面9999:内容b:”。每当您尝试阅读页面时,都会查看该页面是否存在。如果不是,您的答案将是空白页。如果确实存在,则返回页面内容。每当您写到活页夹中尚不存在的页面时,就添加一张新纸。


否则,您会在文本文件中看到文件名吗?好吧,许多丰富的文件类型(例如图片或PDF文件)可以包含很多元数据。即使简单的UTF-8编码文本文件也包含序列EFBBBF,该序列被大多数文本编辑器隐藏,因此我希望文件元数据只是文件中另一个隐藏且不可访问的部分。无论如何,你会成为一个很棒的老师!这里给出的每个答案在某种程度上都是(并且将会)确实有帮助的,但是我最感谢您的努力。
Jeyekomon 2013年

这不能回答问题,对吗?那么所有元数据都存储在哪里?
Koray Tugay,2015年

@KorayTugay我相信实际的问题是“文件元数据如何存储在Windows中,以免它们占用空间 ”。在我看来,您可以在“超级用户”帖子中提供的最佳答案是,说明它们存储在文件系统中,而不是直接存储在文件中,这就是为什么不将其计入文件大小的原因。它们在书中,但不作为文本的一部分。
gronostaj 2015年

7

今天刚刚了解了Windows备用数据流(ADS)。这是附加到文件的隐藏资源分叉。自Windows NT 3.1以来,它一直是NTFS的一部分。

例如,如果您有一个空白文本文件,但在文件的属性标记中填写了一些摘要信息,则会创建一个隐藏的ADS文件并将其附加到文本文件中。报告原始文件的大小时,大多数Windows版本都不包括ADS文件的大小。

您可以从命令提示符下创建和查看ADS文件。

echo "ABCDE" > test.txt:hidden.txt

将创建一个test.txt文件,其中包含一个名为hidden.txt的ADS文件

您可以使用以下命令来编辑文件:

notepad test.txt:hidden.txt

这是一篇易于阅读的文章,更加详细。


那真是一件有趣的事!我实际上也从来没有听说过...谢谢。
Jeyekomon

@Jeyekomon似乎“类型”不支持它,pastebin.com
raw/4Ae3GGkN


2

在NTFS卷上,此信息存储在图元文件中。特别是,文件名和时间戳存储在名为$ MFT的图元文件中。普通Windows方法(例如资源管理器或命令提示符)无法访问图元文件。

欲了解更多信息:

http://ntfs.com/ntfs-system-files.htm

http://en.wikipedia.org/wiki/NTFS


谢谢。因此,答案在于对我的HDD的文件系统有更深入的了解...而且出于好奇-您知道任何“异常”的Windows方法吗?一个实际上对访问那些图元文件有用的文件?几个Google关键字就足够了
Jeyekomon 2013年

1
@Jeyekomon您需要使用扇区编辑器。这里有一个例子:blogs.technet.com/b/askcore/archive/2013/03/01/…–
David Marshall
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.