linux软硬链接区别

Posted

tags:

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


(1)硬链接 

       

        一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个 inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访 问。这种情况就被称为"硬链接"(hard link)。

      硬链接必须在一个分区,两个文件互为源,命硬,删掉一个还有一个。多个文件共享一个inode。是为了节省inode资源。这多个文件的内容是同步的

       硬链接可以认为不是一个文件,它只是实际文件的一个别名,它的作用是防止真实文件被误操作,给一个文件建立硬链接后,他们互为别名,删除其中任一个,只 会删除该别名,实际文件并不会被删除。由于只是别名没有任何其他信息,所以并不占用原始文件大小的磁盘空间。

技术分享

             硬链接举例如下:

技术分享


(2)软链接 

      可以不在一个分区,只有一个最本质的源文件。删掉源另一个也就失效了。两个文件的inode号是不同的。源文件有100M 链接文件可能只有几十K。链接文件只是访问源文件的一个跳板。

       软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

      软链接是另一个文件,作用可以理解为一个指针,作用在这个文件上的操作除了删除都直接转向实际指向文件,由于是一个真实的文件所以占用磁盘空间 。

   

技术分享

       软链接举例如下:

技术分享


总结:

硬链接和软链接的主要区别在于:

(1)软链接可以跨文件系统,硬链接不可以。

(2)硬链接不管有多少个,都指向的是同一个iNode,会把iNode链接数增加只要iNode的链接数不是 0,文件就一直存在,不管你删除的是源文件还是链接的文件。只要有一个存在,文件就存在(其实也不分什么 源文件链接文件的,因为他们指向都是同一个 iNode)当你修改源文件或者链接文件任何一个的时候 ,其他的文件都会做同步的修改。软链接不直接使用iNode号作为文件指针,而是使用文件路径名作为指针(软链接跟源文件的iNode不一样)。所以删除链接文件对源文件无影响,但是删除源文件,链接文件就会找不到要指向的文件 。软链接有自己的iNode,并在磁盘上有一小片空间存放路径名.

(3)软链接可以对一个不存在的文件名进行链接。

(4)软链接可以对目录进行链接,而硬链接不可以。

(5)软链接节省空间资源,硬链接节省Inode资源。

 

本节多次提到inode概念,我将在下节博客中做详细解释

本文出自 “技术人生,简单不简单” 博客,请务必保留此出处http://willis.blog.51cto.com/11907152/1844708

以上是关于linux软硬链接区别的主要内容,如果未能解决你的问题,请参考以下文章

linux软硬链接区别

Linux深入理解重定向inode详解与软硬链接的概念及区别

Linux深入理解重定向inode详解与软硬链接的概念及区别

深入理解软硬链接

Linux中软硬链接那些事儿

描述硬链接和软链接区别