Linux:硬链接与软链接

在看下面内容之前,建议先看一下这篇文章,理解一下inode Linux:Ext系列文件系统-CSDN博客https://blog.csdn.net/2401_88433210/article/details/156613350?spm=1011.2415.3001.5331

一、硬链接

我们看到,真正找到磁盘上文件的并不是文件名,而是inode。其实在linux中可以让多个文件名对应于同一个inode。

1. 定义与原理

硬链接是给现有文件的 inode 新增一个文件名映射,相当于为同一个文件数据取了多个名字。

  • 硬链接和原文件共用同一个 inode,因此 inode 编号相同。
  • 硬链接本质上不是 "新文件",只是原文件的一个别名

2. 创建命令

bash 复制代码
ln 原文件路径 硬链接路径

示例:为 test.txt 创建硬链接 test_hard.txt

可以看到inode一样,都是指向同一个文件

同时硬链接数由1变成了2,表面有两个文件指向这个inode

我们在删除文件时干了两件事情:1.在目录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。

在当前目录下创建path目录,进入path,会发现.和..对应的硬链接都会加1,. 对应的是当前目录的硬链接,.. 对应的是上级目录的硬链接

  • 所以知道了一个目录的硬链接数,就可以通过 -2,知道这个文件里面有多少个目录了
  • 可以进行文件的备份

3. 核心特性

特性 说明
inode 共享 硬链接与原文件 inode 号相同,元数据完全一致。
跨分区限制 无法跨文件系统(分区)创建,因为不同分区的 inode 是独立编号的。
目录限制 不能为目录创建硬链接(Linux 系统限制,避免目录树循环)。
删除机制 文件的链接数 (inode 中的 nlink 字段)记录了指向该 inode 的文件名数量。删除原文件或硬链接时,仅减少链接数;只有当链接数减为 0 时,才会真正删除文件数据。
权限继承 对硬链接的读写操作等同于对原文件的操作,权限由 inode 控制。

二、软链接

1. 定义与原理

软链接是一个独立的文件 ,它的内容是原文件的路径,相当于 Windows 中的 "快捷方式"。

  • 软链接有自己的 inode,与原文件的 inode 号不同。
  • 访问软链接时,系统会根据其存储的路径跳转到原文件。

2. 创建命令

bash 复制代码
ln -s 原文件路径 软链接路径

示例:为 test.txt 创建软链接 test_soft.txt

test_soft.txt文件有内容,存储的是源文件的路径,但是不能打开,因为会直接链接到源文件。

软链接可以用来给深度太深的运行程序创建快捷方式,让用户方便调用。

3. 核心特性

特性 说明
独立 inode 软链接有自己的 inode,元数据(如创建时间)与原文件无关。
跨分区支持 可以跨文件系统(分区)创建,因为软链接存储的是原文件的绝对 / 相对路径。
目录支持 可以为目录创建软链接(常用场景:如为版本目录创建快捷方式 ln -s /usr/local/python3.10 /usr/local/python)。
删除机制 软链接是独立文件,删除软链接不影响原文件 ;但如果删除原文件,软链接会变成悬空链接 (指向不存在的文件),访问时会报错 No such file or directory
权限特点 软链接的权限显示为 lrwxrwxrwx(所有用户可读写执行),但实际权限由原文件决定。

三、硬链接 vs 软链接 核心区别总结

对比维度 硬链接 软链接
inode 关系 与原文件共用同一个 inode 有独立的 inode
本质 原文件的别名 指向原文件的快捷方式(独立文件)
跨分区 不支持 支持
目录链接 不支持 支持
删除原文件 仍可通过硬链接访问文件数据 软链接变为悬空链接,无法访问
权限 与原文件权限一致 权限显示为 lrwxrwxrwx,实际由原文件决定
标识 ls -l 无特殊标识,与普通文件一致 ls -ll 开头,末尾显示 -> 原路径

四、典型使用场景

  1. 硬链接 :适合需要多位置访问同一文件数据,且不希望因删除某一个别名导致文件丢失的场景。例如:日志文件的多目录备份。
  2. 软链接 :适合目录快捷方式跨分区文件访问版本管理 等场景。例如:为 /usr/local/php-8.2 创建软链接 /usr/local/php,方便切换版本。
相关推荐
源图客7 分钟前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
用什么都重名11 分钟前
Git分支合并与远程服务器同步实战:保留关键配置文件
运维·服务器·git
C++ 老炮儿的技术栈13 分钟前
Ubuntu root账号自动登陆
linux·运维·服务器·c语言·c++·ubuntu·visual studio
2301_7807896616 分钟前
零信任架构中,身份感知防火墙(IAFW)的部署要点与最佳实践
linux·运维·服务器·人工智能·tcp/ip·架构
2401_8685347832 分钟前
2025下半年网络规划设计师真题(选择题、案例分析)
运维·服务器·网络
Urbano39 分钟前
22 道工序、核心难点与自动化升级方案
运维·自动化
Urbano42 分钟前
工装裤与外套缝制自动化对比:真实设备选型与工艺适配指南
运维·自动化
小狮子&1 小时前
ubuntu2604无法共享文件夹问题解决
linux·运维·服务器
biter down1 小时前
3:VMware Workstation 安装 Ubuntu 22.04 超详细教程
linux·运维·ubuntu
思茂信息1 小时前
CST软件基于液态金属开关的方向图可重构天线
服务器·算法·重构·cst·仿真软件·电磁仿真