在讲硬链接与软链接的区别之前,我们首先了解inode,了解inode让我们更容易理解何为硬链接和软链接。
inode概念
何为inode,inode就是索引节点,而inode表中存放着文件的元数据,何为元数据,元数据就是文件名称、大小、时间戳、所有者、权限、inode等信息,而文件中的内容就是文件的数据,因此文件是由元数据(metadata)和数据(data)组成。Inode到底有什么用呢,请看下图:
我们在查找文件时,是以文件名称来查找,但是系统无法识别文件名称,而是以inode号来查找文件的位置,因此 inode 号才是文件的唯一标识而非文件名,文件名仅是为了方便人们的记忆和使用,系统或程序都是通过 文件的inode 号查找到的文件数据块。
硬链接概念
接下来了解一下何为硬链接和软链接,硬链接:就是一个文件可以有一个或多个文件名。请看下图:
是否看了图2觉得对硬链接更容易理解了,硬链接其实就是有很多个文件名不一样,但是元数据都是一样的,都是指向同一个inode,并由inode号指向文件中的内容(数据),当编辑‘filename1’中的元数据或数据时,而filename2与filename3中的元数据与数据也会跟着改变,请看下图:
硬链接总结:
-
创建硬链接会增加额外的记录项以引用文件
-
对应于同一文件系统上一个物理文件
-
每个目录引用相同的inode号
-
创建时链接数递增
注意:删除硬链接文件时
-
rm命令递减计数的链接
-
文件要存在,至少有一个链接
-
当链接数为零时,该文件被删除
-
不能跨越驱动器或分区
-
语法: ln filename [linkname]
软链接概念
何为软链接,软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。请看下图:
从上图可以看出,软链接的数据也就是另一个硬链接的路径,其数据是引用硬链接文件的,但是元数据却跟硬链接不一致,请看下图:
是否已经对软链接已经有一个新的认识了呢。
软链接总结:
-
一个符号链接指向另一个文件
-
ls – l的 显示链接的名称和引用的文件
-
一个符号链接的内容是它引用文件的名称
-
可以对目录进行
-
可以跨分区
-
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
-
语法:ln -s filename [linkname]
接下来是重头戏,软链接与硬链接的区别:
-
硬链接和原文件没有什么区别,而且共享一个 inode 号,除了名称不一致,其它的数据以及元数据均一致;而软链接不共享 inode,有自己独立的 inode,与原文件的元数据也不一致,但是软链接的数据是引用原文件的数据
-
若原文件删除了,则软连接则不可以访问,但是软链接还存在,而硬连接则是可以的,但是硬链接次数递减,而软软件不会更改
-
由于符号链接的特性,导致其可以跨越磁盘分区及文件系统,但硬链接不具备这个特性
原创文章,作者:Aleen,如若转载,请注明出处:http://www.178linux.com/27016