操作系统—软链接和硬链接的介绍、实现、区别

一、前言

有时候我们希望给某个文件取个别名,那么在 Linux 中可以通过硬链接软链接的方式来实现,它们都是比较特殊的文件,但是实现方式也是不相同的。

首先简单介绍一下,Linux文件系统的索引节点(inode)

  • 索引节点,也就是 inode ,用来记录文件的元信息,比如 inode 编号、文件大小、访问权限、创建时间、修改时间、数据在磁盘的位置 等等。索引节点是文件的唯一 标识,它们之间一一对应,也同样都会被存储在硬盘中,所以索引节点同样占用磁盘空间

二、硬链接和软链接的实现

ln命令 用来为文件创建链接,链接类型分为硬链接和软链接两种,默认的链接类型是硬链接。如果要创建软链接必须使用"-s"选项。

硬链接是多个目录项中的「索引节点」指向一个文件 ,也就是指向同一个 inode,但是 inode 是不可能跨越文件系统的,每个文件系统都有各自的 inode 数据结构和列表,所以硬链接是不可用于跨文件系统的 。由于多个目录项都是指向一个 inode,那么只有删除文件的所有硬链接以及源文件时,系统才会彻底删除该文件(源文件会有一个引用计数Links来标记)。

软链接相当于重新创建一个文件,这个文件有独立的 inode ,但是这个文件的内容是另外一个文件的路径 ,所以访问软链接的时候,实际上相当于访问到了另外一个文件,所以软链接是可以跨文件系统的 ,甚至目标文件被删除了,链接文件还是在的,只不过指向的文件找不到了而已。

三、软、硬链接的区别

  1. 与硬链接不同的是,软链接确实是一个新文件,当然它具有不同的索引节点号;而硬链接并没有建立新文件。
  2. 软链接没有硬链接的限制,可以对目录文件做软链接,也可以在不同文件系统之间做软链接。
  3. 用ln -s命令建立软链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行软链接。而当源文件用相对路径时,如果当前的工作路径与要创建的软链接文件所在路径不同,就不能进行链接。
  4. 软链接不增加源文件的Links 值,硬链接会增加源文件的Links值,(Links值可以用 stat + 文件名查看)
相关推荐
倔强的石头_12 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
chlk12318 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑18 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件19 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒19 小时前
OpenClaw 多 Agent 配置实战指南
运维
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux