linux——软硬链接
建立文件链接
1. ln file_src file_dst
2. ln -s file_src file_dst
用途
- 解决了文件的共享使用
- 隐藏文件路径
- 增加权限及安全性
- 节省存储空间
软硬链接原理
- 硬链接
若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名
硬链接(hard link):文件A是文件B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。 - 软链接
软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。因此软链接的创建与使用没有类似硬链接的诸多限制。
软链接(soft link):A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接-死链接。
软硬链接的区别
- 硬链接
-文件有相同的 inode 及 data block;
-只能对已存在的文件进行创建;(由硬链接原理可知)
-不能交叉文件系统进行硬链接的创建;
-不能对目录进行创建,只可对文件创建; (原因是文件系统不能存在链接环也就是说在文件系统目录结构中产生循环,后果会导致例如文件遍历等操作的混乱)
-删除一个硬链接文件并不影响其他有相同 inode 号的文件。 - 软链接
-软链接有自己的文件属性及权限等;(软链接原理可知)
-可对不存在的文件或目录创建软链接;(软链接原理可知)
-软链接可交叉文件系统;
-软链接可对文件或目录创建;
-创建软链接时,链接计数 i_nlink 不会增加;
-删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
-软链接可以被系统侦测到,而硬链接不可以。也就是说软链接相对于硬链接来说更安全