在 UNIX 中链接

Linking in UNIX

我有几个关于 UNIX 中的链接的问题

  1. 我可以说 UNIX 中的软链接类似于 windows 中的快捷方式吗?
  2. 复制和硬链接的区别?
  3. 谁能给我一个我应该更喜欢硬链接而不是复制的用例?

我现在一团糟。非常感谢任何帮助

  1. 我对windows中的快捷方式不太了解,但我认为它相似但不相同。文件系统级别的软 link 基本上是一个文本文件,带有路径名和标记为 link 的标志。它可以是机器上任何位置的任何相对或绝对路径名。通常任何打开 link 的用户进程都会被内核重定向到它指向的文件,甚至不会 'realize' 它。将 link 读取为 link 本身需要特殊的系统调用,如 readlink() 当您删除软 link 指向的文件时,link 仍然存在,但现在指向 'nowhere' 并且无法再读取。

  2. 您可以将硬 link 想象成第二个目录条目,它指向文件系统上与 'original file' 相同的区域(更准确地说:它指向表示文件位置和元信息(如大小、所有者等)的相同 inode)。 link 'original' 和 'link' 很难区分,如果您通过其中一个路径名更改文件,您也会通过另一个路径名看到更改。这不适用于删除,只要 link 计数(inode 中存储的另一个值)大于 1,只有目录条目被删除并且 link 计数递减。 硬 link 只能在同一个文件系统中创建,因为每个文件系统都有自己的 table 个索引节点。

  3. 这或多或少来自 2。如果你想使用 hard links 的特殊属性(或者在大文件的情况下只保存 space)使用硬 link 否则复制