Linux的软连接和硬链接

1.创建链接

首先ln --help 可以看到默认创建的链接是硬链接。若是要创建符号链接则需要使用-s 参数

格式是: ln 源文件 链接文件 或者 ln -s 源文件 链接文件

2.区别

首先我创建了a和b文件。 然后又分别建立了a的硬链接a2,b的符号链接b2

由图中即可看出区别:

1.a和a2的 inode号相同,b和b2的inode号却不同

2.a和a2均是普通文件 ,即以 -打头,而b2则是以l打头,说明它是一个符号链接。

3.每建立一个硬链接,文件的链接数量就会+1,而符号链接则不会

简单理解inode,当系统分区设置完成之后,设置了文件系统就会产生inode,inode会记录文件的属性和block的位置,block则是

具体存放我们文件内容在磁盘的地方。

观察上图,标记处,由此可以得知:硬链接文件的inode实际上是和源文件的inode一模一样,可以得知,它们都指向了磁盘的同一个地方。类似于Java里的2个个字符串a和b,它们的值都是"abc",均指向常量池的同一个地方。所以每当建立一个硬链接时候文件的链接数都会加1。

而同样的:我们也建立了第三个符号链接,可以看到b b2 b3的链接数都是1.,以及它们的inode均不同,由此可以得知符号链接是单独的一个文件,它里面存放的内容如下图维基百科:即它文件里存放着源文件的路径,所以inode不同,新建符号链接数时候链接数也不会+1

4.创建硬链接时候源文件必须存在,而创建软链接时候,源文件可以不存在。

创建c 和c1时候发现创建失败,而符号链接则可以创建成功。只是不生效。

5.删除硬链接的源文件和符号链接的源文件

删除硬链接的源文件,对硬链接无影响,只要它们的链接数不为0,磁盘上就不会清空文件的内容,文件内容还在,当文件的链接数为0时候,才会被清空。

删除符号链接的源文件之后,符号链接仍然还在,只是失效了(因为所指的的路径的文件已经被删除了)。

如下图1和2:

删除硬链接源文件a和1个硬链接a2,再cat a3发现,仍然正常。只是链接数-2。

可以看到删除b之后,b2和b3均已经失效了,且在屏幕上,它们所指的源文件因为被删除,所以在闪烁。

6.相同点;修改文件则会同步源文件和链接文件

这是当然的,硬链接指的是同一块磁盘区域,符号链接记录的是路径。所以不管修改哪个文件,源文件或者链接文件,文件里的内容都会同步

国外一个参考链接:https://linuxhandbook.com/inode-linux/

我的博客有分享更多好玩的计算机知识,欢迎访问 vwo50博客站 .

相关推荐
dllmayday1 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256731 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无2 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801682 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
码云数智-大飞2 小时前
本地部署大模型:隐私安全与多元优势一站式解读
运维·网络·人工智能
Strugglingler3 小时前
【systemctl 学习总结】
linux·systemd·systemctl·journalctl·unit file
Harvy_没救了4 小时前
【网络部署】 Win11 + VMware CentOS8 + Nginx 文件共享服务 Wiki
运维·网络·nginx
春风有信4 小时前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器
嵌入式×边缘AI:打怪升级日志4 小时前
100ASK-T113 Pro 开发板 Bootloader 完全开发指南
linux·ubuntu·bootloader
lzhdim4 小时前
SQL 入门 12:SQL 视图:创建、修改与可更新视图
java·大数据·服务器·数据库·sql