Linux链接" ln"命令

时间:2013-07-08 21:49:36

标签: linux bash filesystems ext4

我正在bash中编写一个shell脚本,我在文件之间建立了一些链接,但我不确定使用什么类型的链接(物理或符号)。做一些研究,我注意到使用符号链接而不是物理链接更常见。我的问题是为什么在需要间接时使用符号链接(它创建一个额外的I节点来保护有关文件的真实I节点的信息)而不是使用直接指向文件的硬链接?

换句话说:

为什么

ln -s ...

而不是

ln -P ...

4 个答案:

答案 0 :(得分:4)

符号链接的主要原因是“软”符号链接可以跨越文件系统边界。表示符号链接的文件将包含一个字符串,该字符串是指向的文件的实际路径。只要该路径的最终用户表示保持不变,符号链接就可以工作。如果你在符号链接的末尾移动文件,符号链接现在将是陈旧的(又名“悬空”),因为它指向的资源不再存在。

硬(又称物理)符号链接在inode层工作。由于inode在单个文件系统中仅是唯一的,因此您无法将ACROSS文件系统硬链接。如果允许,您可能很容易遇到重复的inode情况。好处是无论你在何处移动硬链接的目标,指向资源的链接都将“跟随”,因为它们指向inode本身,而不关心实际的路径/资源名称是什么。

答案 1 :(得分:2)

脱离我的头顶:

  1. 符号链接跨文件系统工作。如果您不想跟踪源文件和目标链接所在的文件系统,或者您有时在文件系统之间移动文件,那么使用符号链接就不那么麻烦了。

  2. $ @&安培;# $&安培; emacs个备份文件。在编辑时,说出file.txt并在emacs中对其进行更改,emacs会将原始文件重命名为file.txt~并将更改保存在原始文件名下。如果有file.txt的硬链接,则它现在链接到file.txt~,这可能不是您想要的。指向file.txt的符号链接仍将指向更新的inode。

答案 2 :(得分:0)

硬链接只能在同一文件系统上工作,重命名inode。只有在其inode的最后一个链接消失时才能删除文件。硬链接通常用于文件而不是目录。

符号链接是包含另一个文件路径的实际文件。符号链接也可以跨文件系统工作。它们也可以指向不同的文件类型。符号链接也可以指向文件或目录。

答案 3 :(得分:0)

  • 硬链接在文件系统之间没有意义,因为它们基本上是指向本地FS上的inode的指针。符号链接不关心;因为它们只是名字,所以它们可以在任何地方生活。

  • 如果您查看目录列表并查看符号链接,您就知道它是指特定的其他位置。另一方面,硬链接没有提供这样的线索。您可能不知道自己在某个重要文件中玩耍,直到stat这两个名字为止。