我想在 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 资源管理器创建不同类型的链接和连接非常有帮助。