Linux系统中的两种链接:一种为硬链接(hard link),另一种为软连接或叫符号链接(symbol link or soft link),创建链接的命令为ln,在默认不带参数的情况下,执行ln命令创建的链接是硬链接。如果使用ln -s命令创建链接则为软连接。
-
硬链接:ln 原文件(实体文件) 链接文件
-
软连接:ln -s原文件(实体文件) 链接文件(快捷方式文件)
-
注意:目标文件不能事先存在
硬链接
硬链接是指通过索引节点inode来链接,在Linux文件系统中,保存在硬盘分区中的文件不管是什么类型都会给他分配一个索引节点编号(Index node)
在linux文件系统中,多个文件指向同一个索引节点是正常的,这种情况的文件就被称为硬链接。
提示:硬链接文件就相当于文件的另外一个入口。硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止误删原数据(这也是快照的原理),为什么一个文件建立了硬链接就会防止数据误删呢?因为文件系统的原理是,只要文件的索引节点还有一个以上的硬链接,只删除其中一个硬链接并不影响索引节点本身和其他的链接(即数据实体没有被删除)。只有当文件的最后一个连接被删除以后,文件才会被彻底删除并释放空间。硬链接原理图如下:
软链接
软连接(soft link)也称为符号链接(symbolic link)。linux里的软连接文件就类似于windows系统中的快捷方式。linux里的软连接文件实际上是一个特殊的文件,文件类型是l。软连接文件实际上可以理解为一个文本文件,这个文件里包含有软连接指向另一个原文件的位置信息,因此,通过访问这个“快捷方式”就可以迅速定位到软连接指向的原文件实体。
知识小结
硬链接
-
具有相同inode节点号的多个文件是互为硬链接文件
-
删除硬链接文件或者删除原文件任意之一,文件实体并未被删除
-
只有删除了原文件及所有对应的硬链接文件,文件实体才会被删除
-
当所有的硬链接文件和原文件被删除后,再存放新的数据会占用这个文件的空间。或者硬盘fsck检查的时候,删除的数据才会被系统回收
-
硬链接文件就是文件的另一个入口(相当于超市的前门、后门一样)
-
可以通过给文件设置硬链接文件,来防止重要文件被误删
-
通过执行命令“ln sorce_file dest_file”,即可完成创建硬链接
-
硬链接文件可以用rm命令删除
-
对于静态文件(没有进程正在调用的文件)来讲,当对应的硬连接数为0,文件就被删除。
软连接
-
软连接类似windows的快捷方式(可以通过readlink查看其指向)
-
软连接类似一个文本文件,里面存放的是原文件的路径,指向源文件的实体
-
删除原文件,软连接文件依然存在,但是无法访问指向的原文件了
-
软连接指向的原文件失效的时候,一般是白色红底闪烁提示。
-
执行命令“ln -s 原文件 目的文件”即可完成文件软连接(目标不能存在)
-
软连接和原文件是不同类型的文件,也是不同的文件。inode号也不相同