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博客站 .

相关推荐
小成202303202652 小时前
Linux高级02
linux·开发语言
mounter6252 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==3 小时前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
特长腿特长3 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5383 小时前
Linux环境变量
linux·运维·服务器
pluvium273 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员3 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
kebeiovo4 小时前
atomic原子操作实现无锁队列
服务器·c++
赛博云推-Twitter热门霸屏工具4 小时前
Twitter运营完整流程:从0到引流获客全流程拆解(2026)
运维·安全·自动化·媒体·twitter
CHHC18804 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器