什么是修复点,为什么命名为Reparse Point?


10
  • 它是什么?

    根据MSDN Docs的说法,在NTFS文件系统中,有一个称为“重新解析点”的概念,并且:

    当文件系统打开具有重新解析点的文件时...

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

    但是这个流行的答案却相反:

    一个重新解析点是linux所谓的符号链接。

    哪个是正确的答案?


  • 为什么这样命名?

    令我困惑的另一件事是这样一个概念的命名,我查了一下它的文档,但没有看到任何有关起源的信息,有人对此有任何线索吗?我猜这个名称包含“ parse”,因为它涉及使用文件系统过滤器来解析数据结构,但是为什么它是“ RE-parse point”,而不仅仅是“ parse point”


“再次查看,因为您的数据不在您认为的位置。”
Mokubai

Answers:


6

一个重新解析点是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,尤其是在路径包含符号链接的情况下。


我想知道IO_REPARSE_TAG_LX_SYMLINK当您引用最新的Win10“类Unix”符号链接时,WSL()是否使用了Linux符号链接?如果您指的是NTFS符号链接,则它们自Windows Vista以来就存在,并且存在过滤器驱动程序以将确切的功能改型到较旧的OS版本。
0xC0000022L

2

Microsoft:修复点

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

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

数据不只是解析一次。数据发现,在第一解析得到重新以解决数据的真正含义解析的一些应用程序扩展。

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


@TwistyImpersonator这就是我在引号下的段落中要说的内容。如果我能以某种方式更好地表达它,那么我愿意提出建议。
Mokubai
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.