在 UNIX 中链接
Linking in UNIX
我有几个关于 UNIX 中的链接的问题
- 我可以说 UNIX 中的软链接类似于 windows 中的快捷方式吗?
- 复制和硬链接的区别?
- 谁能给我一个我应该更喜欢硬链接而不是复制的用例?
我现在一团糟。非常感谢任何帮助
我对windows中的快捷方式不太了解,但我认为它相似但不相同。文件系统级别的软 link 基本上是一个文本文件,带有路径名和标记为 link 的标志。它可以是机器上任何位置的任何相对或绝对路径名。通常任何打开 link 的用户进程都会被内核重定向到它指向的文件,甚至不会 'realize' 它。将 link 读取为 link 本身需要特殊的系统调用,如 readlink()
当您删除软 link 指向的文件时,link 仍然存在,但现在指向 'nowhere' 并且无法再读取。
您可以将硬 link 想象成第二个目录条目,它指向文件系统上与 'original file' 相同的区域(更准确地说:它指向表示文件位置和元信息(如大小、所有者等)的相同 inode)。 link 'original' 和 'link' 很难区分,如果您通过其中一个路径名更改文件,您也会通过另一个路径名看到更改。这不适用于删除,只要 link 计数(inode 中存储的另一个值)大于 1,只有目录条目被删除并且 link 计数递减。
硬 link 只能在同一个文件系统中创建,因为每个文件系统都有自己的 table 个索引节点。
这或多或少来自 2。如果你想使用 hard links 的特殊属性(或者在大文件的情况下只保存 space)使用硬 link 否则复制
我有几个关于 UNIX 中的链接的问题
- 我可以说 UNIX 中的软链接类似于 windows 中的快捷方式吗?
- 复制和硬链接的区别?
- 谁能给我一个我应该更喜欢硬链接而不是复制的用例?
我现在一团糟。非常感谢任何帮助
我对windows中的快捷方式不太了解,但我认为它相似但不相同。文件系统级别的软 link 基本上是一个文本文件,带有路径名和标记为 link 的标志。它可以是机器上任何位置的任何相对或绝对路径名。通常任何打开 link 的用户进程都会被内核重定向到它指向的文件,甚至不会 'realize' 它。将 link 读取为 link 本身需要特殊的系统调用,如
readlink()
当您删除软 link 指向的文件时,link 仍然存在,但现在指向 'nowhere' 并且无法再读取。您可以将硬 link 想象成第二个目录条目,它指向文件系统上与 'original file' 相同的区域(更准确地说:它指向表示文件位置和元信息(如大小、所有者等)的相同 inode)。 link 'original' 和 'link' 很难区分,如果您通过其中一个路径名更改文件,您也会通过另一个路径名看到更改。这不适用于删除,只要 link 计数(inode 中存储的另一个值)大于 1,只有目录条目被删除并且 link 计数递减。 硬 link 只能在同一个文件系统中创建,因为每个文件系统都有自己的 table 个索引节点。
这或多或少来自 2。如果你想使用 hard links 的特殊属性(或者在大文件的情况下只保存 space)使用硬 link 否则复制