在 Windows 里面咱们常常经过快捷方式来建立连接以方便咱们使用电脑。而 Linux 中有两种方式建立连接,分别为软连接和硬连接。下面咱们就来详细说下两者的区别。node
定义
ln
(link 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 文件,会获得下面的信息。微信
注意 Inode 和硬连接,下面建立 origin 的硬连接 hardlink。 工具
比对发现,建立硬连接的文件 hardlink 与原文件 origin 之间除了名称不一样以外其余彻底相同,就像同一我的它有个正式的名称也可能会有小名。它们的数据显然彻底同样。url
接下来,咱们建立 origin 的软连接 softlink。 spa
对比发现,origin 和 softlink 是彻底不一样的文件,有着不一样的 size,不一样的块,不一样的 Inode,不一样的 type。惟一的联系是 softlink 文件指向 origin 文件(有点文件指针的味道)。.net
用例
删除源文件对软硬连接的影响
由上图能够看出 hardlink 中硬连接的个数少了一个,而 softlink 仍是安然无恙的存在着。接着咱们经过两个连接来打开文件。 3d
由上图发现,hardlink 依旧能打开文件,而软连接却没法查看原文件。
参考文献
若是该文章对您产生了帮助,或者您对技术文章感兴趣,能够关注微信公众号: 技术茶话会, 可以第一时间收到相关的技术文章,谢谢!
本篇文章由一文多发平台ArtiPub自动发布