硬链接的一些典型用途有哪些?

硬链接的一些典型用途有哪些?

任何习惯使用 Windows 的人都能想象符号链接是什么以及它们的用法。另一方面,硬链接的概念对于 Windows 来说是陌生的(我说得对吗?)。

我想知道 Linux 中硬链接的典型用途是什么。我已经看到过不同的帖子描述了它们工作方式的不同。我想问的是,在哪些典型情况下,用户最好使用硬链接而不是符号链接?

答案1

当我需要在两个或更多位置使用单个文件时,我会使用硬链接,我预计有一天我会删除其中一个位置,并且我可能会忘记我有指向该文件的链接。这可以防止我最终得到指向不再存在的文件的符号链接。

澄清:

文件名实际上是指向该文件的硬链接。因此,每个文件至少有一个硬链接,也就是我们通常所认为的“文件名”。删除文件时,实际上是在删除其硬链接(因此名称为“删除”,而不是rm“删除”)。删除文件的最后一个硬链接后,系统也会删除该文件。

答案2

硬链接允许...

  • 一个可执行文件可以有多个名称。

    例子:

    ls -l /bin | grep -v ' 1 ' | sort将为您列出/bin。结果...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    bunzip2 和 bzcat 并不使用 3 个文件,而是使用同一个文件,并在文件内部区分要执行的操作。节省代码,代码越少,错误的可能性就越小,维护也越容易。

  • 可以通过多条路径访问单个文件。

    以包管理器为例,它会为每个已安装的包创建一个 /usr/share/doc/$packagename 目录,并在该目录中创建一个名为 LICENSE 的文件,其中包含包的许可证信息。典型 Linux 系统上的许多包都是 GPL 许可的,因此文件系统上可能只有一份副本和 199 个链接,而不是有 200 份 GPL 副本。ptman@Serverfault

硬链接在这里起作用(而软链接不起作用)的原因是:仅删除其中一个硬链接不会删除文件本身。

相关内容