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,方便切换版本。
相关推荐
pusheng20252 小时前
数据中心安全警报:为何“免维护”气体传感器可能正在制造危险盲区?
linux·网络·人工智能
每日出拳老爷子2 小时前
【浏览器方案】只用浏览器访问的内网会议系统设计思路(无客户端)
运维·服务器·webrtc·实时音视频·流媒体
wgl6665202 小时前
自主Shell命令行解释器
linux·运维·windows
熙丫 133814823862 小时前
以新国标开启网络安全保障新视野——CISAW安全运维认证助力专业人才培养
运维·安全·web安全
Crazy________2 小时前
Kubernetes探针实战和生命周期
linux·服务器·网络·kubernetes
时空自由民.2 小时前
SSH 免密连接服务器
运维·服务器·ssh
算法小菜鸟成长心得3 小时前
记录自己第一次将React 编写的前端部署到服务器,实现外网访问
服务器·前端·react.js
.小小陈.4 小时前
Linux高频基础实用指南:从文件操作到日志
linux·运维·服务器