一般来说,使用
hard link
设定链½文件时,磁盘的空间与
inode
的数目都不会改变!
我们还是由
图
7.2.1
来看,由图中可以知道,
hard link
只是在某个目录下的
block
多写入一个关连数据而已,
既不会增加
inode
也不会耗用
block
数量哩!
Tips
hard link
的制作中,其实还是可能会改变系统的
block
的,那就是当你新增这笔数据
却刚好½目录的
block
填满时,就可能会新加一个
block
来记录文件名关连性,而导致磁盘空间的变化!不过,
一般
hard link
所用掉的关连数据量很小,所以通常不会改变
inode
与磁盘空间的大小喔!
由图
7.2.1
其实我们也能够知道,事实上
hard link
应该½能在单一文件系统中½行的,应该是不能
够跨文件系统才对!
因为图
7.2.1
就是在同一个
filesystem
上嘛!所以
hard link
是有限制的:
.
不能跨
Filesystem
;
.
不能
link
目录。
不能跨
Filesystem
还好理½,那不能
hard link
到目录又是怎么回事呢?这是因为如果使用
hard link
链½到目录时,
链½的数据需要连同被链½目录底下的所有数据都½立链½,举例来说,如果你要
½
/etc
使用实体链½½立一个
/etc_hd
的目录时,那么在
/etc_hd
底下的所有档名同时都与
/etc
底
下的檔名要½立
hard link
的,而不是½连½到
/etc_hd
与
/etc
而已。
并且,未来如果需要在
/etc_hd
底下½立新文件时,连带的,
/etc
底下的数据又得要½立一次
hard link
,因此造成环境相当大的复
杂度。
所以啰,目前
hard link
对于目录暂时还是不支持的啊!
.
Symbolic Link (
符号链½,亦即是快½方式
)
相对于
hard link
,
Symbolic link
可就好理½多了,基本上,
Symbolic link
就是在½立一个独立的
文件,而这个文件会让数据的读取指向他
link
的那个文件的档名
!由于只是利用文件来做为指向的
动作,
所以,
当来源档被删除之后,
symbolic link
的文件会『开不了』
,
会一直说『无法开启某文
件!』。实际上就是找不到原始『档名』而已啦!
举例来说,我们先½立一个符号链½文件链½到
/etc/crontab
去看看:
[root@study ~]#
ln
-
s /etc/crontab crontab2
[root@study ~]#
ll
-
i /etc/crontab /root/crontab2
34474855
-
rw
-
r
--
r
--
. 2 root root 451 Jun 10 2014 /etc/crontab
53745909
lrwxrwxrwx. 1 root root
12
Jun 23 22:31
/root/crontab2
-
> /etc/crontab
由上表的½果我们可以知道两个文件指向不同的
inode
号码,当然就是两个独立的文件存在!
而且
连½档的重要内容就是他会写上目标文件的『文件名』
,
你可以发现为什么上表中连½档的大小为
12
bytes
呢?
因为箭头
(-->)
右边的档名『
/etc/crontab
』总共有
12
个英文,每个英文占用
1
个
bytes
,
所以文件大小就是
12bytes
了!
关于上述的说明,我们以如下图示来½释: