首页 > 代码库 > 硬链接与符号链接的比较?

硬链接与符号链接的比较?

    今天就说说硬链接(实体链接)与符号链接(类似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