Linux 运维之硬链接与软链接详解

Posted kingle-study

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 运维之硬链接与软链接详解相关的知识,希望对你有一定的参考价值。

  了解这个的时候不如先知道下文件吧.

    我们知道文件都有文件名与数据,但是呢这个在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。

    用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;

    而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。

    在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名是为了方便人们的记忆和使用     

    系统或程序通过 inode 号寻找正确的文件数据块,所以呢文件读取过程则为先读取inode,然后找block数据。

    而linux 引入的两种链接:硬链接与软链接,为系统解决了文件的共享使用,同时提供隐藏文件路径,节省存储,同时增加了文件的安全。

    你可能看了这么久还是一脸懵逼的,不要着急看完实例,你就懂了。

 

一,硬链接

    就是一个文件的一个或多个文件名 -->这么简单的回答是不是又懵逼了呢??

    通俗的讲硬链接就是一个你的复制人,你在的时候你干什么他也干什么,但是你不在了,他是不会消失,就不受你约束了。

    可是我还要讲一个呢---------ln命令  ---> ln [选项]... [文件]...

    你看着文章只需要掌握两个

              ln  目标文件   创一个个性化名字   ---->硬链接

              ln  -s   目标文件   创一个个性化名字------>软链接       

    ln  就是创建链接的     ----->然后没了。

    

    ln  学会了现在正式开讲  硬链接

    我们通过硬链接的特性来去了解他吧

   1,文件具有相同的inode及data  block,

     技术分享图片

      我们先创建一个文件,现在我要给他添加硬链接,

     技术分享图片

     创建好了

     技术分享图片

     是不是创建好了??然后用ls -li 查看下看到inode一样的

      这就是inode一样。看到这里肯定有个模糊的理解了吧,看张图:

    技术分享图片

     2,硬链接是不会占用空间的

        这个你知道就行,记住不占用磁盘空间

     3,只能对已存在的文件进行创建

       创建的时候源文件要在,你不可能凭空出来个链接文件吧??

     4,不能对目录进行创建,只可对文件创建  

        对目录创建是软连接的事,硬链接只会创建文件链接哦  

     5,无论哪个文件输入东西另一个也会有

         技术分享图片

        这就是复制人的强大

      6,删除一个文件另一个是不受影响的

        我们删除源文件看看:

          技术分享图片

       不受影响,依旧能写能读

       注意:目录创建是不可以的哦

        技术分享图片

      

        也不能交叉文件系统

         我是这样理解一个root 系统 一个dev  里面东西不一样就不行了   

 二,软连接

    来完成硬链接不能完成的事:

    软链接呢就像你的投影,为啥这样说呢?你有的他有,你不在了他就变木头

    看下软链接的读取流程  

 技术分享图片

 

    创建一个软链接先:

    技术分享图片

    看到错误没呢?

    创建的时候,要创建的内容不能带/ 所以目录名不能和文件名重合。

     软链接呢可以做硬链接的事,即可以文件,也可以目录哦

  特性:  1,软链接有自己的文件属性及权限,inode不同等

       不知道大家有没有发现上面图片,已经描述很详细了

        文件属性不同呢

        2, 可对不存在的文件或目录创建软链接

        这个是不是强大多了?不过你创建好了,源文件不再,创建的是没用的呢

          技术分享图片

 

           我们要怎么让他有用呢??

        答案是创建源文件

    技术分享图片

      看不闪了 活了 ,,,

        同样可以推出,,假如删除源文件,链接文件是不能用的,无效

      技术分享图片

     技术分享图片

     3,文件内容共享,无论哪里有新文件还是内容,另一边都会有

       技术分享图片

    

     4,软连接是可以对文件或者目录创建的

      这个可以理解吧

    5,创建软链接时,链接计数 i_nlink 不会增加

    技术分享图片

    不管你创建多少都不会增加的,硬链接却会有哦我们看看:

    技术分享图片

     6, 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)

   

      好了结束了 ,下一篇博客不见不散! 

以上是关于Linux 运维之硬链接与软链接详解的主要内容,如果未能解决你的问题,请参考以下文章

从零开始的linux 第二十一章(Inode以及Block详解其二与软链接)

Linux硬链接与软链接的区别

Linux 硬链接与软链接 目录结构

硬链接与软连接

Linux基本命令学习——硬链接与软链接权限管理

硬链接与软链接的区别