为什么 Windows Server 2003 上的硬链接目标不会立即显示正确的文件大小和上次修改时间?

为什么 Windows Server 2003 上的硬链接目标不会立即显示正确的文件大小和上次修改时间?

我想在 Windows Server 2003 上创建文件的硬链接,然后我偶然发现了超级用户问题Windows 上的 ntfs 硬链接。我尝试使用 mklink 作为建议的答案之一,发现 mklink 不是一个独立程序,而是 cmd.exe 命令 shell 的一部分,但直到操作系统的更高版本才实现。

然后我尝试了fsutil 硬链接命令并创建硬链接如下:

fsutil hardlink create c:\testfile.txt c:\temp\testfile.txt

它创建了指向 c:\temp\testfile.txt 的硬链接 c:\testfile.txt。

当我编辑 c:\testfile.txt 时,我注意到 c:\temp\testfile.txt 的文件大小和上次修改时间不会立即匹配;需要几分钟才能匹配。为什么会这样?

我还注意到,当我执行“dir”或查看 Explorer 中的链接时,没有任何迹象表明它是硬链接。您随后如何知道?

其次:在尝试 fsutil 之前,我尝试了 linkd.exe,它是 Windows Server 2003 资源工具包的一部分。它似乎可以很好地创建链接,但每次尝试编辑链接时,我都会收到“访问被拒绝”的消息。有什么想法吗?

答案1

目前我只能回答您的第二个问题。

硬链接在操作系统看来就像是原始文件一样。这是有意为之,例如,如果您删除硬链接,也会删除原始文件。这是设计使然。因此,至少在 Windows 资源管理器中,没有简单的方法可以检测到它是一个链接,至少在视觉上是如此。

更新:非常感谢@Vedran 纠正我,并更好地解释了 NTFS 上的硬链接。还提醒我不要假设过去正确的东西现在可能不正确。

“它们都是原始的。不同的文件名指向相同的数据位。当没有人再指向该数据时,它才被视为可用空间。”

至少在较新版本的 Windows 中,硬链接在 Windows 资源管理器中清楚地显示为链接。

另外,优秀的LinkShell 扩展对于从 Windows 资源管理器创建不同类型的链接和连接非常有帮助。

相关内容