Linux 中的硬链接是什么?

Linux 中的硬链接是什么?

我搜索了一下并试图了解硬链接和符号链接(软链接)之间的区别。

我发现此链接很有用。但我仍然不太清楚。我理解软链接不是原始文件的副本,但硬链接是副本吗?

答案1

用邮件传递来打个比方,符号链接就像是一个转发地址...当某些东西试图打开符号链接时,它会打开存储在那里的“文件”(虽然不是字面上的文件),并发现它应该查看具有不同名称的文件,因此它会打开另一个文件。

硬链接更像是同一个地方有两个地址。(当然,这在物理世界中实际上是不可能的)。当某些东西尝试读取任一文件名(地址)时,它们会获得相同的物理文件(位置)。

因此,硬链接不是副本,因为文件仅存储一次(但具有多个名称)。但它的行为非常类似于副本,因为您可以从两个文件名访问相同的信息。

答案2

不。文件的硬链接(第二个以及所有后续的)是指向磁盘上相同 inode 的指针。

答案3

当您创建硬链接时,这意味着同一个文件会出现在两个不同的地方。文件实际上只是对磁盘上一组数据块的引用,因此硬链接会添加另一个引用。文件很少真正被删除;引用只是被删除,因此无法访问数据。这就是为什么当您删除作为硬链接创建的文件时,另一个原始文件会保留下来,反之亦然。

另一方面,符号链接是访问具有特定名称的文件的方向。它告诉任何程序,“如果你想使用这个文件,它就在那里”。这就是为什么如果你删除符号链接的目标,符号链接就会中断。而如果你删除链接,目标不会受到影响。

答案4

*nix 系统中的文件分为两部分。一部分是数据部分,另一部分是 inode。inode 存储元信息(与数据相关的信息,如它在 HDD 中的存储位置)。硬链接会创建此 inode 的精确副本。而符号链接会创建一个指向实际 inode 的 inode。因此,硬链接中的 inode 数据与目标相同,但符号链接中的数据不同。长话短说,符号链接和硬链接的区别在于 inode 数据的内容,而不是文件数据。这是我对符号链接和硬链接之间差异的理解。最初我很难理解这一点,因为这是开发人员的事情,而我不是开发人员。哦,知识渊博的人,如果我错了,请纠正我。

相关内容