linux软链接和硬链接的区别

1 创建软链接和硬链接

如下图所示,一开始有两个文件soft和hard。使用 ln -s soft soft1创建软链接,soft1是soft的软链接;使用ln hard hard1创建硬链接,hard1是hard的硬链接。可以看到软链接的文件类型和其它3个文件的文件类型是不一样的,软链接的文件类型是l开头的。

2 区别

2.1inode号是不是一样

软链接和原文件inode号不同,硬链接和原文件inode号相同。

inode是操作系统对一个文件的唯一标志,inode不同,那么说明两个文件就是不同的文件。使用stat查看soft和soft1的inode号,可以看出来两个文件的inode号是不一样的,soft和soft1是两个独立的文件。soft1作为soft的软链接,文件内容是源文件的路径。

使用stat查看hard和hard1的inode号,发现两者的inode号是相同的,并且hard和hard1的Link都是2。说明硬链接不是一个独立的文件,硬链接是原文件的一个别名,两者指向同一个inode,只不过这个inode的引用计数都是2。

2.2原文件删除之后的反应

如下图所示,删除hard和soft,软链接显示为红色,为无效的软连接;硬链接还是有效的。因为软链接和原文件是两个独立的文件,所以源文件可以删除;而硬链接是原文件的别名,并且引用计数是2,所以删除硬链接只是删除文件名而已,文件内容同并没有真正删除,此时hard1的Link变为1。

hard和soft删除之后,再创建同名的文件。软链接还是可以链接到新创建的soft,因为软链接是通过文件路径来找原文件的,所以可以关联上;硬链接无法关联,因为两者的inode号是不一样的,可以看到hard和hard1两个的大小也是不一样的。

2.3是不是可以跨文件系统链接

软链接可以跨文件系统链接,硬链接不可以。

什么是不同的两个文件系统,可以通过mount查看不同文件系统的挂载位置,使用cat /proc/filesystems也可以查看当前系统支持的文件系统类型。

当跨文件系统创建硬链接的时候,提示错误信息,不能跨设备创建硬链接。

2.4是否可以链接文件夹

软链接可以链接文件夹,硬链接不可以。

如下图所示,打印错误信息"hard link not allowed for directory"。

2.5是否可以链接不存在的文件

软链接可以,硬链接不可以。如下图所示,硬链接链接不存在的文件时错误信息为"no such file or directory";软链接可以,但是也是无效的,因为原文件不存在。

相关推荐
lixzest8 分钟前
Vim 快捷键速查表
linux·编辑器·vim
ICscholar6 小时前
ExaDigiT/RAPS
linux·服务器·ubuntu·系统架构·运维开发
sim20206 小时前
systemctl isolate graphical.target命令不能随便敲
linux·mysql
薛定谔的猫19827 小时前
RAG(二)基于 LangChain+FAISS + 通义千问搭建轻量级 RAG 检索增强生成系统
运维·服务器·langchain
米高梅狮子7 小时前
4. Linux 进程调度管理
linux·运维·服务器
再创世纪8 小时前
让USB打印机变网络打印机,秀才USB打印服务器
linux·运维·网络
fengyehongWorld9 小时前
Linux ssh端口转发
linux·ssh
知识分享小能手10 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04中的Shell编程详细知识点(含案例代码)(17)
linux·学习·ubuntu
浩子智控11 小时前
电子产品设计企业知识管理
运维·服务器·eclipse·系统安全·硬件工程
以太浮标11 小时前
华为eNSP模拟器综合实验之-BGP路由协议的配置解析
服务器·开发语言·php