创建硬链接何时有用?

创建硬链接何时有用?

硬链接主要有两个限制:

  1. 硬链接通常要求链接和文件位于同一文件系统中。
  2. 只有超级用户可以创建目录的硬链接。

因此,引入了符号链接来绕过硬链接的限制。那么,问题是,硬链接是否仍然需要?是否有它们更有用的情况?

答案1

硬链接帮助我们以更灵活的方式组织文件系统。基本上,硬链接允许我们将一个文件同时放在文件系统的多个位置。想象一下你是一名摄影师,有很多照片(这是我生活中的一个例子!)。你可能会根据照片中出现的人物来组织它们,因为有时人们会要求你提供他们的照片。但你可能还想按地点和日期来组织它们。没有真正的方法可以嵌套这三个东西,因为它们是完全独立的组织轴。因此,你可以为这三个不同的事物创建三个不同的层次结构,并让每张照片都出现在这三个层次结构中,没有每张照片必须存储三次。这就是硬链接的魔力。与符号链接不同,我们不需要担心“真实文件”在哪里,因为它们都是真实文件。我们可以随意删除和移动,因为文件将保留,直到不再有任何对它的引用,并在您删除最后一个硬链接时被删除。这很简单,不需要您跟踪太多事情。

答案2

直到所有硬链接(是的,所有文件名都是硬链接,甚至第一个)被删除并且文件关闭后,文件内容才会被清除。因此,当文件在多个地方都需要但可能随时从其中任何一个地方删除时,它很有用,例如在~/Downloads/coolsong.mp3和之间~/Music/Cool Song.mp3

答案3

硬链接相对于符号链接的一个不太重要的优势是,当它到达硬链接的 inode 时,内核无需进行任何进一步的处理即可访问文件。当遇到符号链接时,内核必须读取链接值并继续遍历目录结构,然后才能到达文件的 inode。这需要更长的时间,尽管差异不一定容易衡量。当符号链接值上的一个元素本身就是符号链接时,事情会变得非常有趣。

答案4

一个有用的情况是,当你有一个程序(或脚本)需要下载一个大的临时 tarball 并且在解压之后你的程序会立即删除它。

如果你出于某种原因想要保留该 tarball 以供将来使用,最好的方法是ln /tmp/tarball.tgz ~在 tarball 仍在下载时进行。然后你不需要做任何事情。

当下载完成时,即使您的程序删除了“原始”文件,精确的副本仍应位于您的主目录中。

相关内容