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

一、前言

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

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

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

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

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

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

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

三、软、硬链接的区别

  1. 与硬链接不同的是,软链接确实是一个新文件,当然它具有不同的索引节点号;而硬链接并没有建立新文件。
  2. 软链接没有硬链接的限制,可以对目录文件做软链接,也可以在不同文件系统之间做软链接。
  3. 用ln -s命令建立软链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行软链接。而当源文件用相对路径时,如果当前的工作路径与要创建的软链接文件所在路径不同,就不能进行链接。
  4. 软链接不增加源文件的Links 值,硬链接会增加源文件的Links值,(Links值可以用 stat + 文件名查看)
相关推荐
aningx4 小时前
使用自定义bash脚本预防oom卡死 v2
linux
智塑未来4 小时前
短剧出海平台选择:技术视角下的翻译配音工具选型与自动化流程实战
运维·自动化·xcode
天衍四九-4 小时前
MySQL有哪些索引
数据库·mysql
A-刘晨阳4 小时前
K8s集群中的数据库新范式:KES-Operator解锁部署、扩缩容、备份全链路自动化
运维·数据库·云原生·kubernetes·自动化
大模型码小白4 小时前
Harness Engineering 驾驭工程:从使用到项目实战
大数据·数据库·人工智能·python·spring
JoyCong19985 小时前
知识科普:ToDesk鸿蒙版高级功能免费开放使用了!
运维·服务器·华为·智能手机·harmonyos·远程工作
cjp5605 小时前
011. UG二次开发,UG管道通讯服务器与wpf客户端通讯
linux·运维·服务器
迪康coolmu5 小时前
企业文档防泄密五层防护实战:基于迪康端点安全一体化管理系统的设计与落地
运维·经验分享·安全
abcyuu5 小时前
福州中小企业业财一体化系统权限管理与数据安全实践方案
大数据·网络·数据库
智能运维指南5 小时前
AI加持下的可观测平台与传统平台有什么本质区别?智能告警降噪和根因分析是否可靠?
运维·人工智能·可观测平台·嘉为蓝鲸