硬链接和复制的文件有什么区别?

Mik*_*e B 36 rhel hard-link files

我的理解是硬链接包括原始文件的副本,我可以删除一个位置的硬链接文件,但它仍然存在于另一个位置。

如果是这样,我为什么要使用硬链接?为什么不只有两个单独的文件?

The*_*eer 46

如果您复制文件,它将复制内容。因此,如果您修改单个文件的内容,则不会对另一个文件产生影响。

如果您创建硬链接,则会创建一个指向相同内容的文件。因此,如果您更改其中一个文件的内容,则会在两个文件上看到更改。

  • 对于非常大的文件,创建硬链接总是比复制原始文件更快吗? (3认同)

Pet*_*ter 19

硬链接基本上是同一文件的第二个文件名。所以如果你硬链接一个文件,它只会在文件系统上出现一次,因此只占用一次空间。所以如果你想节省磁盘空间,你想使用它

  • 彼得的解释很好,但他遗漏了“链接数”。在文件的 inode(在磁盘元数据上)有一个链接计数。硬链接会增加链接数,软链接不会。如果链接计数降为零,则允许内核删除文件的内容。 (22认同)
  • 软链接基本上是指向另一个文件的指针。所以如果你删除原文件,软链接仍然存在,但会被破坏。硬链接是同一个文件的 2 个名称,因此可以单独删除它们。 (6认同)
  • 感谢您的及时回复。那我为什么要使用硬链接而不是软链接呢? (4认同)
  • 我认为 Alan 对此的回答有一个重点:更改文件会更改所有硬链接,而副本则具有不同的内容。 (4认同)

rjm*_*nro 8

在 unix 文件系统上,每个文件名实际上是一个指向磁盘上数据位置的硬链接,称为 inode。如果您创建一个到现有文件的新硬链接,它不会占用磁盘上的额外空间,因为它只是指向相同数据的另一个指针。如果您通过一个或其他链接编辑数据(或直接编辑 inode),这两个文件都将被更改。

系统会记录每个 inode 有多少个硬链接。当链接数为 0 时,文件不再可达,数据被标记为可以被覆盖的安全。所以给定一个有 2 个硬链接的文件,如果你删除任何一个链接,数据都不会被删除。只有同时删除这两个数据才会消失。

您可以使用-i切换到ls命令查看文件的 inode 编号。

另一方面,软链接通过文件名指向另一个文件。如果您移动或删除原始文件,链接将被破坏。