计算机知识 |
---|
软连接和硬链接 |
链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。
可以简单的理解为Windows 中常见的快捷方式
从使用角度上讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写 如果是可执行文件的话,也支持执行
区别在于底层
大家都知道,文件有文件名和数据,在Linux 上这被分成了两部分: 用户数据(user data)和元数据(metadata), 用户数据:即文件数据块,数据块是记录文件真实内容的地方,而元数据则是文件的附加属性,如文件的大小,创建时间,所有者等信息,在linux 中文件的inode号才是文件的唯一标示,而不是文件名。 inode是文件元数据的一部分,但是其并不包含文件名,inode即索引节点号。文件名仅仅是为了方便人们的记忆和使用。系统或者程序通过inode号寻找正确的文件路径。
为了解决文件的共享使用,Linux系统引入了两种连接,硬链接和软连接
与普通文件没有什么不同,inode都指向同一个文件在硬盘中的区块 文件具有相同的inode和data block 只能对已经存在的文件进行创建 不能交叉文件系统进行硬链接的创建 不能对目录进行创建 删除一个硬链接文件并不影响其他具有相同inode号的文件 修改一个硬链接文件,具有相同inode号的文件也能感知到,因为他们都指向同一个data block
软连接与硬链接不同 若文件数据块中存放的内容是另一个文件的路径名指向,则该文件就是软连接,软连接文件与源文件具有不同的inode号。 软连接就是一个普通文件,只是数据块内容有点特殊。 软连接有着自己的inode号以及用户数据块。因此软连接的创建与使用没有类似硬链接的诸多限制。
- 软连接有着自己的文件属性以及权限
- 可对不存在的文件或者目录创建软连接
- 软连接可以交叉文件系统
- 软连接可以对文件目录进行创建
- 创建软连接时候,链接计数i_nlink 不会增加
- 删除软连接并不影响被指向的文件,但是若被指向的源文件被删除,则相关软连接被称为死链接