linux 中硬链接和软连接的区别

来源:互联网 发布:电影配音软件 编辑:程序博客网 时间:2024/05/20 09:23

linux 中硬链接和软连接的区别

 

首先我们需要了解linux下硬链接以及软连接的基本概念.

1.硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用这句话我们可以理解成:源文件的原名被删除了,但是别名还在,故我们还可以使用源文件,即原文件还在,直到所有文件名被删除后,原文件才会被删除)

1>Hard Link只能连接到同一文件系统的文件,有比较大的局限性。

2>和原文件共享一个Inode

3>删除原文件,硬链接仍然可以使用(直到inode的链接数为0,才删除inode对应的文件);

2.软链接:也称为符号链接,它是为了弥补Hard Link的不足才引入的。新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似(故:原文件被删除后,软连接就不能被使用了),新建的软链接可以指向不存在的文件.

1> 软连接可以跨越磁盘,可以连接文件以及路径,可以连接到不存在的文件或路径,相对于Hard Link比较灵活;

2> 和原文件不共享一个Inode, 软连接是一个特殊的Inode,和原文件的inode不同

3>删除原文件,软链接则不可以再使用;

 

当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到 了~~,而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径

 

另外在转载一下网上的介绍.

硬链接(hard link)

UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系统只存在一个文件的副本。系统简单地通过在目录中建立一个新的登记项来实现这种连接。该登记项具有一个新的文件名和要连接文件的inode号(inode与原文件相同)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。硬链接不能对目录建立硬链接!

硬连接是直接建立在节点表上的(inode),建立硬连接指向一个文件的时候,会更新节点表上面的计数值。举个例子,一个文件被连接了两次(硬连接),这个文件的计数值是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容的,(任何存在的文件本身就算是一个硬连接)只有计数值变成0也就是没有任何硬连接指向的时候才会真实的删除内容。

软链接(symbolic link)

我们把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其链接。

 

个人见解,若有不对,欢迎指正~

 

 

原创粉丝点击