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

相关推荐
宁zz15 小时前
乌班图安装jenkins
运维·jenkins
无名之逆15 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
大丈夫立于天地间15 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
cg501715 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影15 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain16 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon16 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu16 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu
xujiangyan_17 小时前
nginx的反向代理和负载均衡
服务器·网络·nginx