Jey*_*mon 14 windows file-management metadata
(我使用的是 Windows XP,但我想它在所有最新版本的 Windows 中都是相似的。)
例如,当您创建一个新的空文本文档时,您会在其属性中发现它的大小为 0 字节。零字节意味着没有信息。没有数据。
但是,文件仍然有一些名称,它仍然可以携带上次访问、修改和创建的日期。它携带信息是否隐藏文件,是否只读...
那么所有的元数据都存储在哪里呢?
gro*_*taj 10
您被告知硬盘包含文件,但这并不是全部事实。实际上,硬盘驱动器包含一个由许多单个位表示的非常非常大的数字。但是这种解释对您和您的计算机都没有任何意义,因为处理单个大数字并不常见(我说的是非常大的数字)。取而代之的是,计算机将其拆分为更小的“字”(8 位、16 位、32 位或其他)并像这样使用。尽管如此,这只是一堆字(让我们假设 8 位字,即字节)。
现在,该驱动器已分区。我在这个答案中解释了为什么分区是一个好主意:
一般来说,驱动器无需分区即可使用。大多数闪存盘都是这样工作的。但是使用分区有很多优点,仅举出其中的一些:
- 您可以将两个操作系统放在同一个硬盘驱动器上,并且不会相互干扰。每个人都将其分区视为一个逻辑驱动器,除非您告诉它,否则不会与其他分区混淆。
- 您可以在逻辑上分离您的数据。如果一个分区由于某种原因损坏,其他分区很可能会保持完整。
- 使用分区比使用多个较小的硬盘驱动器更好,因为您的系统更安静,消耗更少的能量,并且您可以调整大小、删除、移动它们等。
- 您可以将硬盘驱动器的某些部分用于某些特殊目的。
现在,每个分区都有自己的文件系统。现代版本的 Windows 使用NTFS,但外部媒体或旧分区支持FAT、FAT32和exFAT。日常使用的 Linux 安装通常使用ext文件系统,ext4是最新的。
文件系统定义了文件在磁盘上物理定位的方式。你可以这样想:如果你有一本 10000 页的书,没有任何章节、页码或换行符,那将很难使用。当然页码和章节标题会占用页面上的一些空间,但它们使使用本书变得更加容易和快捷。如果你想跳到章节,比方说,42,你只需在目录中查找即可。然后你翻阅这本书,直到找到你想要的章节。你的文件就是章节,你的文件系统就是书。文件系统元数据,如文件边界、文件名等,也会占用空间,但它占用的空间相对较小,而且它使工作速度更快。
如果您的“章节”是空的,它仍然可以有标题或页码,对吗?空文件包含零字节数据。元数据占用空间,但它不是文件的一部分,而是文件系统的一部分。否则你会在文本文件中看到文件名?
顺便说一下,这就是为什么早期版本的 DOS 只接受 8.3 名称的原因——为文件名保留的空间非常有限。NTFS 允许长度为 255 个字符的文件名[1]。
在您的评论中再多说一句:
我曾经有一种病毒,它以某种方式损坏了我 PC 中的几个文件,因此它们的大小似乎约为 100GB。他们每个人。在我的 40GB 硬盘上。所以一定有某种魔法...... :-D
借助称为稀疏文件的功能,完全有可能拥有比硬盘更大的有效文件。Hennes 在他对这个问题的评论中对这些做了很好的解释:
想象一个能够容纳 100 页的活页夹。如果您将该活页夹用作常规文件,则可以插入 100 页。您可以读取所有 100 个。您可以写入所有 100 个。现在想象一个稀疏的活页夹。您插入您编写的第一页“第 1 页:内容 A”。然后插入你写的第二页“page 9999: content b:”。每当您尝试阅读页面时,您都会查看它是否存在。如果没有,您的答案将是这是一个空白页面。如果它确实存在,则返回页面的内容。每当您写入活页夹中尚不存在的页面时,您都会添加一张新纸。
今天刚刚了解了 Windows 备用数据流 (ADS)。这是附加到文件的隐藏资源分支。自 Windows NT 3.1 以来,它一直是 NTFS 的一部分。
例如,如果您有一个空白文本文件,但在文件的属性标签中填写了一些摘要信息,则会创建一个隐藏的 ADS 文件并将其附加到该文本文件中。大多数版本的 Windows 在报告原始文件的大小时不包括 ADS 文件的大小。
您可以从命令提示符创建和查看 ADS 文件。
echo "ABCDE" > test.txt:hidden.txt
将使用名为 hidden.txt 的 ADS 文件创建一个 test.txt 文件
您可以使用此命令来编辑文件:
notepad test.txt:hidden.txt
这是一篇易于阅读的文章,其中更详细。
归档时间: |
|
查看次数: |
16011 次 |
最近记录: |