硬链接的一些典型用法是什么?


9

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

我想知道Linux中硬链接的典型用法是什么。我已经看过很多不同的文章,描述了它们如何工作。我要问的是,在哪些典型情况下用户最好使用硬链接而不是符号链接?


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

Answers:


9

我在两个或两个以上位置需要一个文件的地方使用了硬链接,我预测有一天我会想要删除一个位置,而我可能会忘记我有一个指向该文件的链接。这样可以防止我以符号链接结尾到不再存在的文件。

澄清:

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


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
    

    代替3个文件bunzip2,bzcat和bzip2使用相同的文件,并且在文件内部对执行操作进行了区分。节省代码,减少代码意味着减少可能的错误并简化维护。

  • 一个文件,可以通过多个路径访问。

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

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


2
“示例:移动(mv)是副本(cp)+移除(rm)。” 仅当源和目标位于不同的安装上时,才如此。否则,a mv仅移动名称,而不移动文件。
Paddy Landau

1
如果要使用技术:mv更改索引节点而不是名称。但是您是正确的:如今该示例看起来有些陈旧,我应该以gzip为例;)
Rinzwind 2012年

3
我们有点偏离主题了,但是我已经测试过了。只要文件保留在同一装载上,mv就只更改名称;索引节点保持不变。
Paddy Landau

这并不能真正解释为什么您不能只使用符号链接-您可以节省一些额外的数据字节。此答案正确解决了这一问题
肯·夏普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.