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

一、前言

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

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

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

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

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

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

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

三、软、硬链接的区别

  1. 与硬链接不同的是,软链接确实是一个新文件,当然它具有不同的索引节点号;而硬链接并没有建立新文件。
  2. 软链接没有硬链接的限制,可以对目录文件做软链接,也可以在不同文件系统之间做软链接。
  3. 用ln -s命令建立软链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行软链接。而当源文件用相对路径时,如果当前的工作路径与要创建的软链接文件所在路径不同,就不能进行链接。
  4. 软链接不增加源文件的Links 值,硬链接会增加源文件的Links值,(Links值可以用 stat + 文件名查看)
相关推荐
易云码7 分钟前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码
向阳121810 分钟前
Dubbo负载均衡
java·运维·负载均衡·dubbo
newxtc13 分钟前
【客观理性深入讨论国产中间件及数据库-科创基础软件】
数据库·中间件·国产数据库·国产中间件·科创
水月梦镜花15 分钟前
redis:list列表命令和内部编码
数据库·redis·list
荒Huang1 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能1 小时前
气爪在自动化装配线中是如何应用的?
运维·自动化
MonkeyKing_sunyuhua1 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
天郁青1 小时前
数据库交互的本地项目:后台管理系统
数据库·交互
马剑威(威哥爱编程)1 小时前
MongoDB面试专题33道解析
数据库·mongodb·面试