ln 是什么
ln 创建硬链接或符号链接。符号链接是一个独立的文件,内容是目标路径;硬链接是同一份数据多了一个名字,两者指向同一个 inode。发布切换、版本目录、跨分区引用都依赖符号链接;硬链接则用于同一文件系统内的多路径引用与节省空间。
基本信息
| 适用平台 | Linux、Unix 通用(coreutils) |
|---|---|
| 命令语法 | ln [-s] 目标 链接名 |
| 常用选项 | -s 创建符号链接 / -f 覆盖已存在的链接 / -n 把已有的符号链接当普通文件处理 / -T 把目标当普通文件 / -v 显示创建过程 |
| 关键差异 | 符号链接可跨文件系统、可指向目录;硬链接不能跨文件系统也不能指向目录 |
典型使用场景
- 发布切换:让指向当前版本的链接快速切换到新版本
- 版本目录:保留多个版本,用固定名字引用当前生效的那个
- 跨分区引用:把大容量目录挂到应用期望的路径下
- 节省空间:同一份数据在同一文件系统内多处引用
- 兼容路径:把老路径保留为符号链接指向新位置
常用示例
常用示例
ln -s /opt/app/v20261012 /opt/app/current # 指向版本目录
ln -sfn /opt/app/v20261013 /opt/app/current # 原子切换发布版本
ln -s /data/logs app-logs # 相对目标按链接所在目录解析
ln big.iso big-hardlink.iso # 硬链接:同 inode 多个名字
ls -l /opt/app/current选项说明
| 选项 | 作用 | 提示 |
|---|---|---|
| -s | 创建符号链接 | 最常用的形式 |
| -f | 覆盖已存在的链接 | 切换发布版本时配合使用 |
| -n | 已有链接指向目录时不进入该目录 | 防止链接嵌套 |
| -T | 把目标当普通文件处理 | 避免在目录内部创建链接 |
| -v | 输出创建的链接 | 便于确认结果 |
目标位置已经是目录时,不加以限制的创建会把链接放进该目录内部,形成意料之外的嵌套;版本切换场景要配合相应选项。
符号链接的目标写成相对路径时,解析以链接所在目录为基准,链接被移动后容易断开;跨目录引用建议写绝对路径。