当前位置: 首页 > news >正文

Linux 软硬链接

目录

软硬链接

软链接

硬链接

软硬链接的区别

硬链接场景

软连接场景


软硬链接

软链接

我们可以通过以下命令创建一个文件的软连接

ln -s mytest softlink-mytest

通过 ls -i -l 命令我们可以看到,软链接文件的inode号与源文件的inode号是不同的,并且软链接文件的大小比源文件的大小要小得多

软连接又叫符号链接,软链接文件相对于源文件来说是一个独立的文件,该文件有自己的inode编号,但是该文件只包含了源文件的路径名,所以软连接文件相比于源文件要小很多。软连接就相当于Windows操作系统当中的快捷方式

软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能执行或是查看软链接的内容了

硬链接

我们可以通过以下命令创建一个文件的硬链接

ln mytest hardlink-mytest

通过 ls -i -l 命令我们可以看到,硬链接文件的inode编号和源文件是相同的,并且硬链接文件大小与源文件大小也是相同的,特别注意的是,当创建了一个硬链接文件后,该硬链接文件和源文件的硬链接数(引用计数)都变成了2

硬链接文件就是源文件的一个别名,一个文件有几个文件名,该文件的硬链接数就是多少,这里inode号为412561的文件有mytest和hardlink-mytest两个文件名,因此该文件的硬链接数为2

硬链接数

任意一个文件,无论目录还是普通文件,都有inode,每一个inode内部,都有一个叫做引用计数得计数器

目录数据块中保存的是文件名:inode编号的映射关系

例如:

文件1:inode 1234

文件2:inode 1234

文件3:inode 1234

文件4:inode 1234

不同文件可以映射同一个inode编号,这里使用的引用计数

这样的映射关系很像 “指针”

与软连接不同的是,当硬链接的源文件被删除,硬链接文件依旧能正常执行,只是文件的硬链接数减少了一个,因为此时该文件的文件名少了一个,所谓的建立硬链接,本质就是在特定目录的数据块中新增文件名和指向文件名的inode编号的映射关系

硬链接就是让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了

tips: 删除软硬链接,我们使用unlink + 软硬链接文件,不管软链接还是硬链接都是后者指向前者

为什么刚刚创建的目录的硬链接数是2?

我们创建一个普通文件,该普通文件的硬链接数是1,因为此时该文件至于一个文件名。

为什么我们创建一个目录之后,该目录的硬链接数为2?

因为每个目录创建后,该目录默认会有两个隐含文件 . .. ,它们分别代表当前目录和上一级目录,因此这里创建的目录有两个名字一个dir另一个就是该目录下的 . ,所以刚创建的目录的硬链接数是2,通过命令我们也可以看到dir和该目录下的 . 的inode编号是一样的,也就可以说明它们代表的实际上是同一个文件

tips:该目录下有效目录的个数等于该目录的硬链接数减2

软硬链接的区别

1. 软连接是一个独立的文件,有独立的inode,而硬链接没有独立的inode

2. 软链接相等于快捷方式,硬链接本质没有创建文件,只是建立了一个文件名和已有的inode的映射关系,并写入当前目录的数块

硬链接场景

硬链接用来维护整个目录结构,路径定位采用硬链接,可以进行目录间切换

注意:不允许目录进行硬链接,但是可以进行软链接

如果对目录采用硬链接可能会产生环路问题,操作系统是不允许的

难道  . .. 不是硬链接?,它是操作系统设置好的进行搜索时不能使用

软连接场景

例如:我创建了一个项目,但是指向文件藏得很深,这样给用户使用就很不方便,所以这时我们就可以创建一个软连接给用户


http://www.mrgr.cn/news/93550.html

相关文章:

  • 音视频入门基础:RTP专题(14)——FFmpeg源码中,对H.264的各种RTP有效载荷结构的解析
  • python从入门到精通(二十四):python爬虫实现登录功能
  • 996引擎-问题处理:实现自定义道具变身卡
  • 【C++ 函数重载】—— 现代编译技术下的多态表达与性能优化
  • ubuntu22.04机器人开发环境配置
  • Elasticsearch 2025/3/7
  • 记录片《遇见大连》
  • LeetCode 哈希章节
  • window系统中的start命令详解
  • 网络编程-----服务器(多路复用IO 和 TCP并发模型)
  • Vue Hooks 深度解析:从原理到实践
  • STM32之软件SPI
  • Windows 内网渗透:名称解析协议与Responder欺骗
  • Zabbix 安装部署
  • 可视化+图解:轻松搞定链表
  • fiddler everywhere 绿色永久版
  • linux awk命令和awk语言
  • 电脑总显示串口正在被占用处理方法
  • Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)
  • 从 Faith 与 Belief 的语义与语境辨析中解析其宗教哲学内涵