我了解到,与 HardLink 不同,SoftLink 实际上将原始文件的信息存储在 HDD 中。我制作了 test1(原始文件)和 test2(test1 的软链接)然后我将 test1 mv(重命名)为 test3 所以软链接 test2-->test1 变成红色并停用。我认为链接使用 Inode 编号,并且 test1 和 test3 具有相同的 Inode 编号,但 SoftLink 不起作用。
这里有一个问题:软链接需要什么信息来激活链接?
答案1
软链接,也称为符号链接,通过文件名而不是索引节点来跟踪文件。因此,您链接到的文件可以位于任何地方,而不仅仅是位于同一文件系统上(与硬链接不同);另一个特点是软链接可以指向其他软链接,最多可达一个上限。软链接本质上是一个特殊的文件,其中存储了目标路径,但 Linux 知道这种类型的文件并读取“内部”路径,并尝试使用目标文件的权限来访问该文件。程序可以要求 Linux 不要点击链接,而是提供有关文件本身的信息(这就是如何ls
显示目标路径是什么);然而,大多数程序只关心链接指向的位置。
因此,为了回答您的问题,软链接包含其内部所需的所有信息。然后操作系统会完成跟踪链接指向的所有工作。
答案2
软链接仅链接到文件名,而不链接到 inode 号。如果原始文件被重命名,软链接就会被破坏,并且链接现在不知道它指向哪里。从其中一个答案中发布这张图片(我不记得了,我很久以前就将这张图片保存在手机中):
如果原始文件被重命名,my-soft-link
将指向不再存在的文件名,因此将变成红色,因为链接或指针将被破坏。在这种情况下,my-soft-link
类似于悬空指针。它指向一个不存在的文件。
另一方面,硬链接则不存在这样的问题,因为硬链接直接指向 inode 号。所以如果原文件被重命名,my-hard-link
也不会变成悬空指针。
因此,为了重新激活符号链接,您可以通过使其指向重命名的文件来更新符号链接。
ln -sfn test3 test2