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

每个习惯使用Windows的人都可以想象符号链接是什么以及它们如何使用。另一方面,硬链接的概念对于Windows来说是陌生的(我说得对吗?)。
我想知道在Linux中硬链接的典型用途是什么。我已经看过不同的帖子描述了它们工作方式的区别。我想问的是,在哪些典型情况下,用户最好使用硬链接而不是符号链接?

3这个问题已经在Unix&Linux stackexchange上被问过了:为什么存在硬链接? - Flimm
2个回答

我在需要一个文件同时存在于两个或更多位置时使用硬链接。我预测总有一天我会想要删除其中一个位置,而且我可能会忘记我有一个指向该文件的链接。这样可以避免出现指向不存在的文件的符号链接。
澄清:
实际上,文件名就是文件的一个硬链接。因此,每个文件至少有一个硬链接,我们通常认为它是“该”文件名。当你删除一个文件时,实际上是删除了它的硬链接(因此称为“remove”,即rm,而不是“delete”)。当一个文件的最后一个硬链接被删除时,系统也会删除该文件。

Hard links allow ...

一个可执行文件可以有多个名称。
例如: 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
不同于3个文件bunzip2、bzcat和bzip2使用相同的文件,在文件内部进行区分以确定要执行的操作。这样可以节省代码,减少可能的错误,并且更容易维护。
一个文件可以通过多个路径访问。
以软件包管理器为例,它为每个安装的软件包创建了一个/usr/share/doc/$packagename目录,在该目录中有一个名为LICENSE的文件,其中包含软件包的许可信息。在典型的Linux系统上,许多软件包都是GPL许可的,因此可以只有一份GPL副本和199个链接,而不是在文件系统上有200个副本。ptman@Serverfault 硬链接在这里起作用的原因(而软链接不起作用)是:仅删除其中一个硬链接并不会删除文件本身。

2例子:一个移动(mv)是一个复制(cp)+ 一个删除(rm)。这只在源和目标位于不同的挂载点时才成立。否则,mv只会移动名称,而不是文件本身。 - Paddy Landau
1如果你想深入技术细节的话:mv 命令更改的是 inode 而不是文件名。但你说得对:看起来那个例子有点过时了,我应该用 gzip 作为例子的 ;) - Rinzwind
3我们有点离题了,但我刚刚测试过这个。只要文件仍然在同一个挂载点上,mv命令只会改变文件名,而inode保持不变。 - Paddy Landau
这并不真正解释为什么你不能只是使用符号链接 - 你可以为了额外的几个字节的数据来保存它们。这在这个答案中得到了正确的解答。 - Ken Sharp