今天就说说硬链接(实体链接)与符号链接(类似Windows的快捷方式)的不同?
首先我们应知道:
每个档案都会占用一个inode
,档案内容由 inode记录来指向;
想要读取该档案,必须要经过目录记录的文件名来指向正确的inode号才能通过block读取数据。
硬链接:只是在目录下新增一笔档名链接到某inode号码的关联记录而已,不占用空间大小。
重点:hard
link 只是在某个目录下的block多写入一个关联数据而已,既不会增加inode也不会减少block。
借用鸟哥书中的例子来说,假如我系统有个/root/crontab他是 /etc/crontab的实体链接,也就是说这两个档名
连结到同一个 inode
, 自然这两个文件名癿所有相关信息都会一模一样(除了文件名之外)。实际的情况
可以如下所示:
[[email protected]
~]# ln /etc/crontab /root/crontab
[[email protected]
~]# ll -i /etc/crontab /root/crontab
1912701
-rw-r--r-- 2 root root 255 Jan 6 2007 /etc/crontab
1912701
-rw-r--r-- 2 root root 255 Jan 6 2007 /root/crontab
缺点:不能跨Filesystem和link目录
具体见鸟哥的私房菜pdf
261页
符号链接:就是建立一个独立的档案,而这个档案会让数据的读取向它link文档的数据。
重点:当来源档被删除以后,symbolic
link 的的档案会『开不了』,会一直说『无法开启某档
案!』。实际上就是找不到原始『档名』而已啦!
举例来说,我们先建立一个符号链接文件链接到/etc/crontab去看看:
[[email protected]
~]# ln -s /etc/crontab crontab2
[[email protected]
~]# ll -i /etc/crontab /root/crontab2
1912701
-rw-r--r-- 2 root root 255 Jan 6 2007 /etc/crontab
654687
lrwxrwxrwx 1 root root 12 Oct 22 13:58 /root/crontab2 ->
/etc/crontab
由上的结果我们可以知道两个档案指向不同的inode号码,当然就是两个独立的档案存在!而且连
结档的重要内容就是它会写上目标档案的『文件名』,你可以发现为什么上图中连结档的大小为12
bytes呢?因为箭头(-->)右边的档名『/etc/crontab』总共有12个英文,每个英文占用1个 byes
,
所以档案大小就是12bytes了!
缺点:如果你做了这样的连结:
ln -s /bin /root/bin
那么如果你进入/root/bin这个目录下,『请注意!该目录其实是/bin这个目录,因为你做了连结
档了!』所以,如果你进入/root/bin这个刚刚建立的链接目录,并且将其中的数据杀掉时,嗯!
/bin里面的数据就通通不见了!这点请千万注意!所以赶紧利用『rm
/root/bin 』 将这个连结档删除
吧!因为它类似Windows的快捷方式切记。
硬链接与符号链接的比较?