UNIX 中的链接是指向文件的指针。与任何编程语言中的指针一样,UNIX 中的链接是指向文件或目录的指针。创建链接是一种访问文件的快捷方式。链接允许多个文件名在别处引用同一个文件。
有两种类型的链接:
-
软链接或符号链接 -
硬链接
当链接的源(链接到的内容)被移动或删除时,这些链接的行为会有所不同。符号链接不更新(它们仅包含一个字符串,该字符串是其目标的路径名);硬链接始终引用源,即使移动或删除。
例如,如果我们有一个文件 a.txt。如果我们创建一个文件的硬链接然后删除文件,我们仍然可以使用硬链接访问该文件。但是如果我们创建一个文件的软链接,然后删除文件,就不能通过软链接访问到文件,软链接就变成了悬空。基本上硬链接增加了一个位置的引用计数,而软链接用作快捷方式(如在 Windows 中)
1. 硬链接
-
每个硬链接文件都被分配了与原始文件相同的 Inode 值,因此它们引用相同的物理文件位置。硬链接更灵活,即使原始文件或链接文件在整个文件系统中移动,也能保持链接,尽管硬链接无法跨越不同的文件系统。 -
ls -l 命令显示所有链接,链接列显示链接数。 -
链接具有实际文件内容 -
删除任何链接,只会减少链接数,但不会影响其他链接。 -
即使我们更改原始文件的文件名,硬链接也能正常工作。 -
我们不能为目录创建硬链接以避免递归循环。 -
如果删除了原始文件,则链接仍会显示文件的内容。 -
任何硬链接文件的大小都与原始文件相同,如果我们更改任何硬链接中的内容,则所有硬链接文件的大小都会更新。 -
硬链接的缺点是不能为不同文件系统的文件创建,也不能为特殊的文件或目录创建。 -
创建硬链接的命令是:
$ ln [原始文件名] [链接名]
2. 软链接文章来源:https://www.toymoban.com/news/detail-440609.html
-
软链接类似于 Windows 操作系统中使用的文件快捷方式功能。每个软链接文件都包含一个指向原始文件的独立索引节点值。与硬链接类似,对任一文件中数据的任何更改都会反映在另一个文件中。软链接可以跨不同的文件系统链接,但是如果删除或移动了原始文件,软链接文件将无法正常工作(称为挂起链接)。 -
ls -l 命令显示第一列值为 l 的所有链接?链接指向原始文件。 -
软链接包含原始文件的路径而不是内容。 -
删除软链接除了删除原始文件外没有任何影响,链接变成“悬挂”链接,指向不存在的文件。 -
软链接可以链接到目录。 -
软链接的大小等于我们给的原文件的路径长度。例如,如果我们像 ln -s /tmp/hello.txt /tmp/link.txt这样链接一个文件,那么文件的大小将是 14 字节,等于“/tmp/hello.txt”的长度。 -
如果我们更改原始文件的名称,那么该文件的所有软链接都会变得悬空,即它们现在毫无价值。 -
跨文件系统链接:如果要跨文件系统链接文件,只能使用符号链接/软链接。 -
创建软链接的命令是:
$ ln -s [原始文件名] [链接名]
本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-440609.html
到了这里,关于Unix/Linux 中的软链接和硬链接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!