Linux

Linux 硬链接与软链接

·2 分钟阅读·689 字
📋 目录

Linux 硬链接 vs 软链接(符号链接)

一、核心原理

  1. 硬链接(hard link)

多个文件名指向同一个 inode,共用磁盘数据块。

  • inode 号相同,文件数据只有一份

  •  ln 源文件 硬链接名 

  1. 软链接(symbolic link / ln -s)

独立小文件,存储源文件路径,类似Windows快捷方式。

  • 自身拥有独立 inode,存放字符串路径

  •  ln -s 源文件 软链接名 

二、关键区别汇总

| 对比项 |硬链接 |软链接| |inode |和源文件同一个inode |独立全新inode| |跨分区 |不能跨磁盘/分区 |支持跨分区、跨主机| |目录 |不能对目录创建硬链接 |可对目录创建软链接| |删除源文件| 源文件删了,硬链接照常可用 |源文件删除,软链接失效(红闪烁断链) |文件大小 |和原文件大小一致 |大小=源文件名路径字符长度| |权限属性 |和原文件完全一致 |自身独立权限,不跟随源文件| |相对路径 |创建链接时路径无所谓 |创建软链接尽量用绝对路径,移动链接易失效|

三、补充要点

1. 硬链接计数:inode 引用计数 nlink ,每建一个硬链接+1,删一个-1;计数为0才真正删除磁盘数据。

2. 软链接失效:源文件改名/移动/删除,软链接变成无效链接。

3. 根目录特殊:Linux系统默认禁止手动创建目录硬链接(防止目录环)。

四、实操示例

bash

硬链接

ln test.txt hlink_test

软链接

ln -s /home/xxx/test.txt slink_test

ls -li # 查看inode号区分

关联文档