软链接和硬链接的联系和区别
为了共享使用,给一个文件在其他地方创建一个链接,使用ln或者link命令实现
1、首先我们来个通俗地理解:
软链接(符号链接):相当于windows里的快捷方式,在其他地方给文件创建一个快捷方式,快捷方式删了,原来文件还是存在的。
硬链接:可以理解为是复制了一份文件(只是通俗理解,其实并不占用磁盘空间)链接文件和原始文件只要有一个存在,文件就会存在,不会消失。
相同点:linux的软链接和硬链接删除都不会影响原始文件,但是修改的话都会影响原始文件。
2、使用方法:
软连接:ln –s 源文件 目标文件,如下图:
解释:首先我创建了一个新的文件,并输入了内容this is a test,然后使用ln -s为test创建软连接,查看软连接内容和test一样。
硬链接:ln 源文件 目标文件
解释:利用ln为test创建了硬链接,查看内容和test是一样的。
3、那软连接和硬链接有什么区别呢?我们看看下图:
我们看到,我们之前为test创建的硬链接的inode和test是一样的,但是软连接和test是不一样的。这个怎么解释呢?
inode 号即索引节点号(是文件元数据的一部分但其并不包含文件名),是文件的唯一标识而非文件名,文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。下图展示了程序通过文件名获取文件内容的过程。
linux中,文件的移动或者重命名是不会改变inode号的。验证如下:
对应链接,我们得知若一个 inode 号对应多个文件名,则称这些文件为硬链接。也就是说,硬链接就是同一个文件使用了多个别名,所以他并不占用空间。
硬链接存在以下几点特性:
- 文件有相同的 inode 及 data block;
- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建;
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件;
软链接就是一个普通文件,它是记录了源文件的一些信息(如inode等),并且软链接有着自己的 inode 号以及用户数据块(故inode和源文件是不同的)。
软链接的创建与使用没有类似硬链接的诸多限制:
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?