硬链接和软链接之间的区别
作者:
Laura McKinney
创建日期:
1 四月 2021
更新日期:
1 可能 2024
内容
Unix中的链接本质上是与文件和目录关联的指针。硬链接和软链接之间的主要区别在于,硬链接是对文件的直接引用,而软链接是按名称的引用,这意味着它按文件名指向文件。
硬链接链接同一文件系统中的文件和目录,但软链接可以遍历文件系统边界。
在了解链接之前,我们应该先了解 索引节点索引节点是一种数据结构,由有关文件的元数据组成,例如文件创建日期,文件授权,文件所有者等。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较依据 | 硬链接 | 软链接 |
---|---|---|
基本的 | 可以通过称为硬链接的许多不同名称访问文件。 | 可以通过指向该文件的不同引用来访问文件,这称为软链接。 |
链接验证,当原始文件被删除时 | 仍然有效,可以访问文件。 | 无效 |
用于创建的命令 | ln | ln -s |
索引号 | 相同 | 不同 |
可以链接 | 到自己的分区。 | 到任何其他联网的文件系统。 |
内存消耗 | 减 | 更多 |
相对路径 | 不适用 | 允许的 |
硬链接的定义
硬链接 直接在同一文件系统中链接两个文件,并且为了识别它使用文件的inode编号。硬链接无法在目录上实现(因为它们指向inode)。什么时候 ”ln”命令用于生成硬链接,它在命令行上创建另一个文件,该文件可用于引用原始文件。原始文件和生成的文件都具有相同的索引节点和内容。因此他们将具有相同的权限和相同的所有者。
原始文件的删除不会影响硬链接文件,并且将保留硬链接文件。索引节点拥有一个计数器,用于计算与其自身的硬链接数。当计数器指示0值时,则清空索引节点。每当您对硬链接进行任何更改时,它都会模仿原始文件。
软链接的定义
软链接 通常是原始文件的替代路径(或别名);这些也称为 符号链接。它包括链接的“目标文件”的名称,标志,指示它是软链接。当访问文件时,软链接通过写在软链接主题中的路径将其重定向到目标文件。
对于Windows OS,其中的软链接充当快捷键,这些功能非常方便。软链接的创建和删除不会影响原始文件。如果删除了目标文件,则软链接会悬空,这意味着它无处指向,并且在访问目标文件时会产生错误。与硬链接不同,软链接不使用索引节点号。绝对路径或相对路径可以是符号链接的一部分。
- 硬链接是原始文件的附加名称,它引用inode来访问目标文件。相比之下,软链接不同于原始文件,并且是原始文件的别名,但不使用inode。
- 删除原始文件后,软链接无效,即使删除了目标文件,硬链接也有效。
- 在Linux中,用于创建硬链接的命令是“ln”。与之相反,用于软链接的命令是“ln -s“.
- 硬链接具有与软链接不同的相同inode编号,其中目标文件及其软链接具有不同的inode编号。
- 硬链接仅限于其自己的分区,但是软链接可以覆盖不同的文件系统。
- 在某些情况下,硬链接的性能优于软链接。
- 相对路径和绝对路径都允许在软链接中使用。相反,硬链接中不允许相对路径。
结论
硬链接不需要额外的空间,并且可以更快地解决问题,但是对硬链接应用的更改会反映在原始文件中。另一方面,“软链接”需要额外的空间,但是“软链接”中的任何更改都不会影响原始文件。与硬链接不同,允许软链接到目录。