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

相关推荐
AlfredZhao10 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346616 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪17 小时前
linux 拷贝文件或目录到指定的位置
linux
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
小宇宙Zz1 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信