硬链接有哪些典型用途?

To *_* Do 9 symbolic-link hard-link

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

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

Pad*_*dau 9

我使用硬链接,我需要在两个或更多位置的单个文件,我预测有一天我会想要删除其中一个位置,我可能会忘记我有一个指向该文件的链接。这可以防止我以一个不再存在的文件的符号链接结束。

澄清:

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


Rin*_*ind 7

硬链接允许...

  • 具有多个名称的单个可执行文件。

    例子:

    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
    
    Run Code Online (Sandbox Code Playgroud)

    而不是 3 个文件 bunzip2 bzcat 和 bzip2 使用相同的文件,并且在文件内部区分了要做什么。节省代码和更少的代码意味着更少的错误和更容易的维护。

  • 多个路径访问的单个文件。

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

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

  • 我们有点跑题了,但我刚刚对此进行了测试。只要文件保持在同一个挂载上,`mv` 只会更改名称;inode 保持不变。 (3认同)
  • “示例:移动 (`mv`) 是复制 (`cp`) + 删除 (`rm`)。” 仅当源和目标位于不同的挂载上时才如此。否则,`mv` 只会移动名称,而不是文件。 (2认同)