今天就说说硬链接(实体链接)与符号链接(类似Windows的快捷方式)的不同?
首先我们应知道:
每个档案都会占用一个inode ,档案内容由 inode记录来指向;
想要读取该档案,必须要经过目录记录的文件名来指向正确的inode号才能通过block读取数据。
硬链接:只是在目录下新增一笔档名链接到某inode号码的关联记录而已,不占用空间大小。
重点:hard link 只是在某个目录下的block多写入一个关联数据而已,既不会增加inode也不会减少block。
借用鸟哥书中的例子来说,假如我系统有个/root/crontab他是 /etc/crontab的实体链接,也就是说这两个档名 连结到同一个 inode , 自然这两个文件名癿所有相关信息都会一模一样(除了文件名之外)。实际的情况
可以如下所示:
[root@www ~]# ln /etc/crontab /root/crontab
[root@www ~]# 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去看看:
[root@www ~]# ln -s /etc/crontab crontab2
[root@www ~]# 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的快捷方式切记。
本文出自 “无痕的忧伤” 博客,请务必保留此出处http://2845621599.blog.51cto.com/8221220/1437382
原文地址:http://2845621599.blog.51cto.com/8221220/1437382