什么是重解析点?为什么这样命名?

什么是重解析点?为什么这样命名?
  • 它是什么?

    根据MSDN 文档在NTFS Filesystem中,有一个概念叫“重解析点”,并且:

    当文件系统打开一个带有重新解析点的文件时……

    从这一行来看,这reparse point只是存储在 NTFS 文件对象中的一些元数据。

    但是这个热门答案另有说明:

    重新解析点就是 Linux 所称的符号链接。

    哪一个是正确答案?


  • 为什么这么命名呢?

    另一件让我困惑的事情是这种概念的命名,我查阅了它的文档,但没有看到任何关于起源的内容,有人知道吗?我猜这个名字包含“解析”,因为它涉及使用文件系统过滤器来解析数据结构,但是为什么是“重新解析点”,而不仅仅是“解析点”

答案1

重新解析点就是 Linux 所称的符号链接。

这主要是,但是不完全的正确。重解析点不一定是链接;它们是可以实现各种链接类型的“构建块”。

是的,它们可以用来实施符号链接——事实上,传统的 NTFS 连接点和较新的 Win10“类 Unix”符号链接是两种不同的重新解析点。

但是,它们可用于实现完全不像符号链接的功能。例如,Windows“卷挂载点”(将驱动器附加到文件夹,而不是驱动器号)也是重新解析点。维基百科文章列出了更多类型 - 例如,重复数据删除文件或触发从磁带备份中检索的“离线”文件。

为什么这么命名呢?

它之所以被称为“重新解析点”,是因为它中断了路径解析过程

当你有像这样的路径时C:\Documents and Settings\Application Data\Microsoft,你可以想象它会被像这样解析:

  1. 查找第一个部分C:– 它是一个驱动器号。访问驱动器。
  2. 查找第二个组件Documents and Settings——它是一个重解析点。读取重解析点元数据,然后从那里重新开始解析。您最终会到达C:\Users
  3. 查找第三个组件Application Data——同样是一个重解析点;读取其元数据并从那里重新启动路径解析。你最终会到达AppData\Roaming
  4. 看...

如果您使用的是 Linux,则可以通过运行看到类似的可视化效果namei /a/long/path/to/something,尤其是当路径包含符号链接时。

答案2

微软:重新解析点

文件或目录可以包含重解析点,重解析点是用户定义数据的集合。存储数据的应用程序和文件系统过滤器可以理解此数据的格式,文件系统过滤器是您安装的,用于解释数据和处理文件。当应用程序设置重解析点时,它会存储此数据以及重解析标记,该标记唯一地标识它正在存储的数据。当文件系统打开带有重解析点的文件时,它会尝试查找与重解析标记标识的数据格式相关联的文件系统过滤器。如果找到文件系统过滤器,该过滤器将按照重解析数据的指示处理文件。如果未找到文件系统过滤器,则文件打开操作失败。

因此,存储的文件或数据由文件系统解析,注意它包含特殊数据,必须重新解析文件系统过滤器必须能够正确解析该文件。由于需要两个单独的解析操作才能成功打开该文件,因此很可能是这个原因导致了文件名称“关于解析点”。

数据不只解析一次。第一次解析找到的数据将关于通过某些应用程序扩展进行解析,以解析数据的真正含义。

这并不意味着重新解析点不是符号链接。它可能只是一个数据块,在重新解析后显示“查看此文件”。

相关内容