Unix / Linux中的链接文件及其类别

Unix / Linux系统中有一种特殊的文件,即链接文件。链接文件很像windows系统中的“快捷方式”,通过它实际上要访问的是源文件(source file)。

 

链接文件有两种类别,分别是硬连接(Hard Link)和符号链接(Symbolic Link)。这两种链接有很大的不同。

 

1)  硬链接

硬连接是其所在目录的block里的一条关联数据,通过它,能找到链接所指文件的inode index,通过   inode节点可以访问源文件的数据。

为了透彻地理解硬链接的概念,需要弄清楚目录是怎么回事。

        1.1)目录的定义

               在Unix / Linux系统中,目录也是文件,如下例:

               drwx------   18 flagonxia flagonxia     4096  1月 11 21:23 flagonxia

               属性域的第一个字母为d,表示flagonxia这个文件的属性是个目录。

 

鸟哥是这样描述目录的。在 Linux 下的 ext2 档案系统建立一个目录时, ext2 会分配一个 inode 与至少一块 Block 给该目录。其中,inode 记录该目录的相关属性,并指向分配到的那块 Block ;而 Block 则是记录在这个目录下的相关连的文件(或其子目录)的关连性! 如果一个block不够用,系统会再分配一个block供目录使用。

1.2) 如何读取目录中的文件?

举个例子,读取文件/etc/crontab时的步骤。

 

 

             


  

step1:系统根据根目录( / )的相关资料可取得 /etc 这个目录所在的 inode ,并前往读取 /etc 这个目录的所有相关属性;

step2:根据 /etc 的 inode 的资料,可以取得 /etc 这个目录底下所有文件的关连数据是放置在哪一个 Block 当中,并前往该 block 读取档案的关连性内容;

step3:由上个步骤的 Block 当中,可以知道 crontab 这个文件的 inode 所在地,并前往该 inode ;

step 4:由上个步骤的 inode 当中,可以取得 crontab 这个文件的所有属性,并且可前往由 inode 所指向的 Block 区域,顺利的取得 crontab 的文件内容。

 1.3)创建一个硬连接就是其所在目录block中的创建了一条关联数据,通过它可以找到源文件的inode,从而访问源文件的block area中的数据。

         可见,创建一个硬链接,即不用占用空间,也不消耗inode。

 1.4)如果文件file有一个硬连接file-hard,如果执行了命令rm file,文件file的block area不会被删除,它的inode index也不会被删除,因为还有硬链接file-hard存在,只有file-hard也被删除了,而文件file又没有其他的硬链接,file的inode和block area才会被系统删除。

         如test1-hard为一个硬链接,我们观察一下它的属性ls -l test1-hard,得到如下结果。

                  -rw-rw-r--    2 flagonxia flagonxia       11  1月 11 23:02 test1

                  -rw-rw-r--    2 flagonxia flagonxia       11  1月 11 23:02 test1-hard 

         可见,test1-hard其实不是一个文件,它像源文件的一个映像,属性和文件一模一样。

 1.5)硬链接的局限性:

        1.5.1)不能跨越文件系统;

        1.5.2)不能link目录。

 

2)软(符号)链接

     软链接就是在一个独立的文件,它有自己的inode index和block area。软链接会让数据的读取指向源文件内容。由于只是利用文件来做为指向的动作,所以,当源文件被删除之后,软链接的文件会“开不了”,会一直说“无法开启某文件!”。

 

3)如何建立硬链接和软链接

     源文件test

     3.1)建立硬链接

             ln test test-hard

     3.2)建立软链接

             ln -s test test-soft  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值