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

Linux 详谈软硬链接

目录

1. 硬链接

2. 软链接

3. 软硬连接对⽐

4. 软硬连接的⽤途


1. 硬链接

我们看到,真正找到磁盘上⽂件的并不是⽂件名,⽽是inode。其实在linux中可以让多个⽂件名对应于同⼀个inode。

[root@localhost linux]# touch abc
[root@localhost linux]# ln abc def
[root@localhost linux]# ls -li abc def
263466 abc
263466 def

abc和def的链接状态完全相同,他们被称为指向⽂件的硬链接。内核记录了这个连接数,inode263466 的硬连接数为2。

我们在删除⽂件时⼲了两件事情:1.在⽬录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。

2. 软链接

硬链接是通过inode引⽤另外⼀个⽂件,软链接是通过名字引⽤另外⼀个⽂件,但实际上,新的⽂件和被引⽤的⽂件的inode不同,应⽤常⻅上可以想象成⼀个快捷⽅式。在shell中的做法

[root@localhost linux]# ln -s abc.s abc
[root@localhost linux]# ls -li
263563 -rw-r--r--. 2 root root 0 9⽉ 15 17:45 abc
261678 lrwxrwxrwx. 1 root root 3 9⽉ 15 17:53 abc.s -> abc
263563 -rw-r--r--. 2 root root 0 9⽉ 15 17:45 def

acm

下⾯解释⼀下⽂件的三个时间:

Access 最后访问时间

Modify ⽂件内容最后修改时间

Change 属性最后修改时间

3. 软硬连接对比

软连接(符号链接):

  • 是一个独立的文件类型
  • 拥有自己的inode编号
  • 存储的是目标文件的路径信息
  • 删除原文件后,软连接会失效(称为"悬空链接")
  • 示例:ln -s source.txt softlink.txt

硬链接:

  • 只是文件名和目标文件inode的映射关系
  • 与原文件共享相同的inode编号
  • 本质上与原文件是同一个文件的多个名称
  • 删除原文件后,只要还有硬链接存在,文件内容就不会被删除
  • 示例:ln source.txt hardlink.txt

4. 软硬连接的用途

硬链接的典型应用场景:

  1. 目录中的特殊链接

    • "." 表示当前目录的硬链接
    • ".." 表示父目录的硬链接
  2. 文件备份

    • 创建硬链接可以实现低成本的文件备份
    • 多个硬链接指向同一文件时,修改任意一个都会影响其他链接
    • 只有当所有硬链接都被删除,文件才会真正被删除
  3. 系统优化

    • 某些系统文件会使用硬链接来节省存储空间
    • 如Linux系统中/bin和/usr/bin目录下的相同命令文件

软连接的典型应用场景:

  1. 类似Windows快捷方式

    • 可以跨文件系统创建
    • 可以链接到目录
    • 示例:ln -s /mnt/network_share/ ~/desktop/share
  2. 版本管理

    • 创建软链接指向不同版本的软件
    • 示例:ln -s python3.9 python
  3. 路径简化

    • 为长路径创建简短的软链接
    • 示例:ln -s /var/www/html/project/current ~/www
  4. 系统维护

    • 临时重定向文件或目录
    • 在不移动实际文件的情况下改变访问路径
http://www.dtcms.com/a/352244.html

相关文章:

  • 如何从零开始学习黑客技术?网络安全入门指南
  • Linux 系统配置 YUM 软件仓库
  • 【大语言模型 22】Tokenization深度技术:BPE、WordPiece、SentencePiece
  • 【Redisson】redis最佳实践-RedissonUtils+Caffeine
  • 【机器人】2025年人形机器人看护革命:AI驱动的医疗变革先锋
  • 小知识-为什么处理异步数据渲染需要async await 搭配Promise.all实现?
  • 昆仑资本完成对国产工业操作系统龙头企业光亚鸿道的投资
  • MYSQL递归
  • mysql优化-mysql索引下推
  • Python 将十进制转换为十六进制
  • Linux命令详解+示例(炫彩超全)
  • 2025秋招季:AI笔试破解大规模招聘难题
  • MySQL 面试题系列(四)
  • Pandas 分组聚合进阶:过滤与 apply
  • 【人工智能】神经网络的优化器optimizer(三):RMSProp动态自适应学习率优化器
  • java自定义注解实现
  • 开发electron时候Chromium 报 Not allowed to load local resource → 空白页。
  • 在使用spring ai进行llm处理的rag的时候,选择milvus还是neo4j呢?
  • gorm 枚举查询遇到的问题
  • 【Python】Python日志模块完全指南:从配置到常见错误排查
  • 深入OpenHarmony后台任务“黑匣子”:BackgroundTaskMgr框架全栈解析与实战避坑指南
  • C#编程:贪吃蛇游戏
  • 使用linux+javascript+html+mysql+nodejs+npm+express等构建信息资料采集系统
  • FreeRTOS 同步互斥与任务协作 学习笔记
  • 【Protues仿真】定时器
  • 对讲联动电梯门禁系统通过深度集成对讲、梯控、身份认证三大模块,在提升便捷性的同时,以“权限后置发放+电梯状态闭环检测“为核心,实现安全性与可靠性的双重突破。
  • 解决VSCode无法下载服务器端 Server问的题
  • 当 C++ 用于嵌入式开发:优点和缺点
  • .gitignore 文件相关使用配置
  • 【Redis】安装和基础命令