快速业务通道

深入理解硬链接和软链接

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-25

  UNIX和Linux都提供了链接命令ln.顾名思义,ln是将两个文件名(此说法不大准确)彼此链接起来,用户无论使用哪一个文件名都可访问到同一 文件.这是我们用ln命令所要达到的目的,但是从技术上讲,只有软链接是链接两个文件名,硬链接不在此列之中.要透彻理解链接的含义,就要分清文件与 文件名的区别.而要区分文件与文件名,我们就得知道文件系统如何管理文件.看似很普通的命令,其技术背景却一点儿也不简单.

  文件系统如何管理文件涉及范围太大,不可能也不必要在此全部叙述,但我们只需知道以下技术要点即可.在Linux中,文件的外延很大,我们常识中的“文件 ”(例如一篇文档等)是文件, 目录、设备等也都是文件.这些文件种类繁多,数量巨大,万一重名怎么办,文件系统是如何区分并管理它们的呢?限制重名?这当然不行!我们来看看Linux 是如何做的.原来Linux的文件系统为每一个文件分配了一个我们称为索引节点(Inode)的数据结构,在这个索引节点内有一个全系统独一无二的索引节 点号,文件系统正是靠这个索引节点号来识别一个文件.另外文件系统用来管理文件的所有信息都包含在索引节点之中.

  好了,给每个文件分配一个唯一的number,文件系统就知道某个文件究竟是张三的文件还是李四的文件.但是文件的真正使用者——我们人类也要用该 number去识别文件吗?呵呵,若此为真,不知是人玩电脑还是电脑玩人罗.因此我们要用我们的方式去区分各个文件,给每一个文件起一好听易记的名字,同 一地点(即同一目录)不能有两个名字一样的文件.地点若不同,允许重名.至此,人类有人类识别文件的方法,电脑(文件系统)有电脑的做法,喔喔,问题又来 了,二者是要“水火不容”呢,还是“沟通无限”呢?这还用问,当然是后者啦.

  OK,既然要“沟通”,“链接”自然而然就提出来了.绕了个大圈,终于得以言归正传,有了上述的背景知识,不管是硬链接还是软链接对于我们来说已是板上鱼 肉.所谓硬链接(hard link, 也称链接[1])就是一个文件的一个或多个文件名.再说白点,所谓链接无非是把我们人类使用的文件名和电脑(文件系统)使用的节点号链接起来.因此我们可 以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录.一个文件有几个文件名(用ln命令实现多个文件名),我们就说该文件的链接数 为几.由定义可知,此链接数可以是1, 这表明该文件只有一个文件名.

Empire CMS,phome.net

  需要特别指出的是,在info ln的帮助信息中所说的硬链接与我的理解是有差别的,先看info是如何讲硬链接.“A "hard link" is another name for an existing file; the link and the original are indistinguishable.”(一个“硬链接”是一个现有文件的别名;链接文件与被链接文件是无法区别的.)哇喔,好象乱套了,谁对谁错?谁都 没错,二者角度不同.Info是就ln命令而论的“硬链接”,注意了,info中的硬链接也是打了双引号的,我估计此有特殊含义.“链接文件与被链接文件 是无法区别的”,没错,它们都指向同一个索引节点嘛.现在我与info主要差别在于,我认同而info不认同以下观点:对于一个拥有文件名的文件,在 没有用过ln命令的情况下,该文件仍存在硬链接,且链接数为1.理论需要实践来证明,在Linux中用ls –l命令获得该目录下文件的详细信息,格式如下:

  -rwxr-xr-x 1 root root 1024 Apr 30 17:06 filename

  上述格式中黑体加下划线的“1”代表文件名filename的文件的链接数为1.做个实验,在同一目录(不同目录也行)使用ln命令:

  ln filename filename2

  然后再使用ls –l命令,会得到下面的信息:

  -rwxr-xr-x 2 root root 1024 Apr 30 17:06 filename

  -rwxr-xr-x 2 root root 1024 Apr 30 17:06 filename2

  很明显,原来文件名为filename的文件现在拥有了两个文件名,链接数变为2, 除此之外其它一切信息都没变,说“链接文件与被链接文件是无法区别的”.下面的事实让我怀疑有没有必要用ln产生新的硬链接:无论使用任一文件名对文 件的任何改动,该文件的所有直接或间接[2]链接文件都会随之而改变,所有信息都保持一致.

  将文件名与索引节点分开,然后采用硬链接的技术管理文件变得更方便,效率更高.例如重命名,进程并不需要打开该文件,只需改动某个目录项的内容即可. 还有删除一个文件也是如此,将相应的目录项删除,该文件的链接数减1,如果删除目录项后该文件的链接数为零,这时系统才把真正的文件从磁盘上删除.

  认识了硬链接究竟是怎么一回事,理解硬链接的两个限制就容易多了.

Empire CMS,phome.net

  1、不允许给目录创建硬链接;

  2、只有在同一文件系统中的文件之间才能创建链接.

  篇幅关系,不再赘述.

  为了克服以上限制,引入符号链接(symbolic link,也称软链接).符号链接实际上是一种特殊的文件类型,这种文件包含了另一个文件的任意一个路径名.这个路径名指向位于任意一个文件系统的任意文 件,甚至可以指向一个不存在的文件.系统会自动把对符号链接的大部分操作(如读、写等)变为对源文件的操作,但某些操作(如删除等)就会直接在符号链接上 完成.在ln中加选项-s便产生一个文件的符号链接. 总之:硬链接就是让多个不在或者同在一个目录下的文件,同时能够修改同一个文件,其中一个修改后,所有有与其有硬链接的文件都一起修改了. 软链接就是与window中的快捷键一样.

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号