您的位置:首页 >> 操作系统 >> Linux >> 正文
Linux RSS
 

软链接与硬链接的区别

http://www.rdxx.com 05年09月13日 22:26 Blog.ChinaUnix.net 我要投稿

关键词: 区别 , 链接
 

hard link 与 soft link

弟最近想要搞懂 hard link 和 soft link,於是查了 study area 裡面的资料 (包含网页与讨论区部份),接着弟又查了书上的资料和网路上面的资料,发觉网页的解释部份有点问题。另外再看到这一个讨论串,也发现了一些问题。首先是网页的部份:

引言回覆:

如果用 hard link 的话﹐档案系统会再建立一个 inode﹐其指向的磁碟位置和原来的档案位置一样﹐而所有指到这个位置的 inode 都会更新其 link 指标﹐hard link 越多﹐指标越多。
.......................
那 soft link 又是什麽呢﹖和 hard link 不一样的地方是﹕它並不是以 inode 指向相同的磁碟空间﹐而是单纯的指向原来的 inode 而已﹐如果原来的 inode 移除了﹐那这个 link 就变为无主孤魂了﹐也就是所谓的 dead link 是也。就好比宋七力有一个本尊﹐同时也有好些分身﹐但如果一旦本尊毁掉﹐那分身也跟着灭亡﹐道理是一样的。

这边有关 inode 的部份似乎讲反了。
hard link 並没有另外建立一个 inode,而是增加一个 directory entry,内容为原始档案的 inode number、这个 hard link 的档案名称和其他相关资讯,所以 hard link 的 inode number 跟原始档案的 inode number 是一样的。在建立 soft link 的时候才会建立一个新的 inode 指到原始档案的 inode,所以 soft link 的 inode number 跟原始档案的 inode number 不一样。这也是为甚麽 hard link 只能指向同一个档案系统裡面的档案,因为每个档案系统都有它自己一系列的 inode,两个不同的档案系统可能有相同的 inode number。而 soft link 具有完整的 pathname,所以他可以跨越不同的档案系统。範例:
代码:

octapult@mydebian:~/temp$ ls -li
总计 0
octapult@mydebian:~/temp$ dd if=/dev/zero of=test bs=128 count=1
读入了 1+0 个区段
输出了 1+0 个区段
128 bytes transferred in 0.001447 seconds (88456 bytes/sec)
octapult@mydebian:~/temp$ df -i
档案系统               Inode (I)已用 (I)可用 (I)已用% 掛载点
/dev/hda1             904960  127338  777622   15% /
octapult@mydebian:~/temp$ ln test 1
octapult@mydebian:~/temp$ df -i
档案系统               Inode (I)已用 (I)可用 (I)已用% 掛载点
/dev/hda1             904960  127338  777622   15% /
octapult@mydebian:~/temp$ ln -s test 2
octapult@mydebian:~/temp$ ls -li
总计 8
 517530 -rw-r--r--    2 octapult octapult      128 2002-11-23 01:36 1
 517531 lrwxrwxrwx    1 octapult octapult        4 2002-11-23 01:37 2 -> test
 517530 -rw-r--r--    2 octapult octapult      128 2002-11-23 01:36 test
octapult@mydebian:~/temp$ df -i
档案系统               Inode (I)已用 (I)可用 (I)已用% 掛载点
/dev/hda1             904960  127339  777621   15% /



再来是关於这个讨论串的部份:

hard link 本来就会佔空间,不包含档案名称的话,就要用掉 8 bytes,档案名称一个字元一个 byte,所以总长度並不固定。假设一个 block 为 4K bytes、一个 hard link 平均为 16 bytes 的话,建立超过 256 个 hard link 的话,就需要再另外增加一个 data block 来存放新的

共3页  1 2 3


 
 
标签: 区别 , 链接 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站