最近在看鸟哥的Linux私房菜,里面对硬链接和符号链接的讲解有些不清楚。
1、硬链接为什么不能链接目录。
举例说:按照文档hard link的推理,要在/home目录下建立/tmp/test/这个目录的hard link就叫/home/test_hlink吧,也即在/home目录的block里面添加一条记录即/home/test_hlink/目录对应的inode编号,也即/tmp/test/这个目录的inode的编号,那么我们就可以通过/home目录的block到/home/test_hlink/目录所对应的inode编号也就是/tmp/test/这个目录的inode了,从而也就可以访问到/tmp/test/这个目录下的文档了。
2、为什么符号链接可以链接跨文件系统而硬链接不能。
我的理解是不管是硬链接还是符号链接都是根据inode来找到对应的文件或目录,那么只要能识别不同文件系统的inode就可以建立链接,如此一来既然符号链接可以跨文件系统拿硬链接也应该可以。
以上是我个人的理解,请高人指出不对的地方,谢谢!
mentkant 于 2011-05-20 16:52:53发表:
学习了
dert 于 2009-10-25 00:45:59发表:
路过
wang7131984 于 2009-09-10 14:58:49发表:
硬链接就是directory entry,又文件名和索引节点号组成。每个文件都至少有一个硬链接,每个目录都至少有两个硬链接(一个来自上层目录,一个来自自身)。硬链接不占用任何额外的block,除非目录项不够用。符号链接是一种特殊的文件,其中block中存的是一个路径字符串。由于每个文件系统都有自己的inode节点使用情况的映射表,所以不存在一个跨越两个文件系统的inode节点,也不存在一个不存在任何文件系统的inode节点(除非文件出错),所以硬链接是不可能跨越不同的文件系统。同是很多现代*nix也绝对禁止用户自己手动来建立一个指向目录的硬链接,因为这会造成死循环。
leohsiung 于 2009-09-09 22:52:13发表:
怎么没有人回答啊?
我自己顶