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

相关推荐
进击切图仔1 小时前
SAM3 微调标注流水线和 Label Studio
java·服务器·前端
Bomangedd1 小时前
NSK RA25BN 滚子直线导轨技术详解
运维·服务器·经验分享·规格说明书
阿拉斯攀登1 小时前
SPI 设备驱动开发
linux·驱动开发·嵌入式硬件·linux内核·嵌入式·linux驱动·spi
2301_780303901 小时前
DevSecOps建设之自动化集成与部署 Jenkins教程和使用案例
运维·自动化·jenkins
zhou135284822672 小时前
Windows 配置 WSL (Ubuntu) 环境完整指南
linux·windows·ubuntu
本尊是喵2 小时前
AutoDL--FileZilla--VS Code远程连接
运维·服务器
FREEDOM_X2 小时前
Linux 进程间通讯(IPC)——总结
linux·c语言·前端·嵌入式硬件·struts
天空'之城2 小时前
Linux 系统编程 17:零拷贝技术全解
linux·嵌入式·零拷贝技术全解
网络小白不怕黑2 小时前
11.虚拟机模拟路由器实验
linux·运维·服务器·网络
Mapleay2 小时前
Linux 内核编程基础
linux·运维·服务器