Linux体系中的软毗连和硬毗连

[复制链接]
发表于 2026-4-14 10:37:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
软毗连概述

软毗连雷同Windows中的快捷方式,自己是一个独立文件,有自己的inode,内容只是指向另一个文件的路径字符串。
其特点如下:

  • 可以跨文件体系、跨分区、跨磁盘
  • 可以链接目次
  • 源文件删除后,软链接变成死链接(失效)
  • 软链接巨细 = 指向路径的字符串长度
  • 支持相对路径、绝对路径创建软毗连
创建方式
  1. ln -s 源文件 目标链接
复制代码
示例:
  1. # 相对路径创建软连接
  2. root@master:/data00/tmp# ln -s sort.txt sort.txt.ln
  3. # 查看
  4. root@master:/data00/tmp# ll -i | grep sort
  5. 28573733 -rw-r--r-- 1 root  root    77 Apr 14 10:56 sort.txt
  6. 28573734 lrwxrwxrwx 1 root  root     8 Apr 14 11:05 sort.txt.ln -> sort.txt
  7. # 通过上面可以看到,其inode不相同,文件大小不相同
复制代码
当修改链接文件后,源文件会产生什么变革呢?
会发现两个文件都会同时修改
  1. root@master:/data00/tmp# echo haha > sort.txt.ln
  2. root@master:/data00/tmp# cat sort.txt.ln
  3. haha
  4. root@master:/data00/tmp# cat sort.txt
  5. haha
复制代码
当我们删除链接文件时,源文件会删除吗?
源文件不会删除,删除链接文件对源文件不会产生任何影响
  1. root@master:/data00/tmp# rm -rf sort.txt.ln
  2. root@master:/data00/tmp# ll | grep sort.txt
  3. -rw-r--r-- 1 root  root     5 Apr 14 11:11 sort.txt
  4. root@master:/data00/tmp# cat sort.txt
  5. haha
复制代码
当删除源文件,会对链接文件产生什么影响呢?
发现链接文件失效
  1. # 创建软连接
  2. root@master:/data00/tmp# ln -s sort.txt sort.txt.ln
  3. root@master:/data00/tmp# ll | grep sort.txt
  4. -rw-r--r-- 1 root  root     5 Apr 14 11:11 sort.txt
  5. lrwxrwxrwx 1 root  root     8 Apr 14 11:15 sort.txt.ln -> sort.txt
  6. # 删除源文件
  7. root@master:/data00/tmp# rm -rf sort.txt
  8. root@master:/data00/tmp# ll | grep sort.txt.ln
  9. lrwxrwxrwx 1 root  root     8 Apr 14 11:15 sort.txt.ln -> sort.txt
  10. # 查看源文件内容
  11. root@master:/data00/tmp# cat sort.txt.ln
  12. cat: sort.txt.ln: No such file or directory
复制代码
硬毗连概述

在同一个磁盘分区中inode号码雷同的文件,互为硬链接。
其特点如下:

  • 多个文件名直接指向同一个 inode
  • 全部硬链接职位完全同等,没有主次之分
  • 删除此中一个,文件本体不会消散,直到全部链接都被删除
  • 不能跨文件体系(不能跨分区、跨磁盘)
  • 不能链接目次(体系克制,防止循环引用)
  • 不占用额外空间(只多一个目次项)
  • 源文件移动 / 改名后,链接依然有效
  • 只有链接数 link count 变为 0,文件才真正删除
  • 文件巨细同等
创建方式
  1. ln 源文件 目标链接
复制代码
示例:
  1. # 创建硬连接
  2. root@master:/data00/tmp# ln uniq.txt uniq.txt.ln
  3. # 可以看到inode完全一样,文件大小一样
  4. root@master:/data00/tmp# ll -i | grep uniq.txt
  5. 28573736 -rw-r--r-- 2 root  root    96 Apr 14 10:58 uniq.txt
  6. 28573736 -rw-r--r-- 2 root  root    96 Apr 14 10:58 uniq.txt.ln
复制代码
当修改硬毗连文件后,源文件会修改吗?
会同时修改
  1. root@master:/data00/tmp# echo hahaha > uniq.txt.ln
  2. root@master:/data00/tmp# cat uniq.txt
  3. hahaha
  4. root@master:/data00/tmp# cat uniq.txt.ln
  5. hahaha
复制代码
删除源文件,硬毗连会失效吗?
不会失效
  1. root@master:/data00/tmp# rm -rf uniq.txt
  2. root@master:/data00/tmp# cat uniq.txt.ln
  3. hahaha
  4. root@master:/data00/tmp# ll -i | grep uniq.txt.ln
  5. 28573736 -rw-r--r-- 1 root  root     7 Apr 14 11:39 uniq.txt.ln
复制代码
软毗连和硬毗连区别

对比项硬链接软链接本质同一文件的多个名字指向路径的快捷方式是否有独立 inode否,共用是,独立能否跨分区不能能能否链接目次不能能源文件删除后依然可用失效(红底闪耀)占用空间险些不占占少量(存路径)支持相对 / 绝对不关心支持实用场景防误删、多路径访问软件版本管理、快捷入口常见使用场景

硬链接


  • 防止文件被误删(多入口备份)
  • 同一文件在多个目次使用,不占双倍空间
软链接


  • 软件版本切换:
  1. ln -s python3.10 python
复制代码

  • 目次快捷访问
  • 跨目次共享步调 / 设置
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表