shell编程之软硬连接ln

在 Windows 里面咱们常常经过快捷方式来建立连接以方便咱们使用电脑。而 Linux 中有两种方式建立连接,分别为软连接和硬连接。下面咱们就来详细说下两者的区别。node

定义

lnlink file 的简称)是 GNU 核心工具包中的基本工具。该命令是为某个文件在另一个位置创建一个同步连接。当咱们须要在不一样的目录用到相同的文件时,咱们不须要在每个须要的目录下都放一个必须相同的文件,此时只需用 ln 建立对应文件的连接,没必要重复的占用磁盘空间。git

命令格式

# 硬连接(source只能是文件)
ln source target
# 软连接(source能够是文件也能够是目录)
ln -s source target

软连接

软连接 symbolic link 跟 Windows 里面的快捷方式等价。它的内容是指向另外一个文件的位置。因此能够建立某个目录的软连接,也能够对一个不存在的文件进行连接。除此以外,它能够跨文件系统。这三点硬连接都没法实现。github

硬连接

硬连接 hard link 能够理解为文件的别名,并且别名能够有多个。bash

原理

对于 Linux 而言,文件的结构与 Windows 有点相似,由文件名,inode(相似于 Windows 下的 FCB 文件控制块,保存文件的一些信息)和数据组成。好比建立 origin 文件,会获得下面的信息。微信

origin

注意 Inode 和硬连接,下面建立 origin 的硬连接 hardlink。 hardlink工具

比对发现,建立硬连接的文件 hardlink 与原文件 origin 之间除了名称不一样以外其余彻底相同,就像同一我的它有个正式的名称也可能会有小名。它们的数据显然彻底同样。url

接下来,咱们建立 origin 的软连接 softlink。 softlinkspa

对比发现,origin 和 softlink 是彻底不一样的文件,有着不一样的 size,不一样的块,不一样的 Inode,不一样的 type。惟一的联系是 softlink 文件指向 origin 文件(有点文件指针的味道)。.net

用例

删除源文件对软硬连接的影响

rmorigin

由上图能够看出 hardlink 中硬连接的个数少了一个,而 softlink 仍是安然无恙的存在着。接着咱们经过两个连接来打开文件。 linkshow3d

由上图发现,hardlink 依旧能打开文件,而软连接却没法查看原文件。

参考文献

  1. GUN核心工具包
  2. 维基百科ln
  3. ln源码

若是该文章对您产生了帮助,或者您对技术文章感兴趣,能够关注微信公众号: 技术茶话会, 可以第一时间收到相关的技术文章,谢谢!

技术茶话会


本篇文章由一文多发平台ArtiPub自动发布
相关文章
相关标签/搜索