# 创建硬链接
ln 源文件 硬链接名
# 创建软链接
ln -s 源文件/目录 软链接名
特性 | 硬链接 | 软链接 |
---|---|---|
inode | 与源文件相同 | 独立的inode |
跨文件系统 | 不支持 | 支持 |
链接目录 | 普通用户不可用 | 可以 |
原始文件删除后 | 仍可访问 | 链接失效 |
文件大小 | 与源文件相同 | 等于路径名的字节长度 |
相对/绝对路径 | 总是使用创建时的路径 | 可以指定相对或绝对路径 |
文件类型 | 普通文件 | 特殊文件(l类型) |
硬链接适合: - 需要多个名称指向同一文件内容时 - 确保文件删除后仍有备份访问路径 - 同一文件需要在不同目录出现但不想复制内容
软链接适合: - 需要跨文件系统链接时 - 链接目录时 - 创建相对路径引用时 - 需要灵活修改指向目标时
问题1:如何查找所有硬链接?
find / -samefile 文件名 2>/dev/null
# 或
ls -i 文件名 # 获取inode号
find / -inum inode号 2>/dev/null
问题2:如何检测悬空软链接?
find -L /path -type l -exec test ! -e {} \; -print
问题3:为什么普通用户不能创建目录的硬链接?
- 这是Linux系统的设计限制,防止目录环路的产生
- 只有root用户可以使用ln -d
创建目录硬链接(不推荐)
问题4:如何查看软链接指向的位置?
readlink 软链接名
# 或
ls -l 软链接名
ls -l
第二列的数字理解软硬链接的区别和适用场景,可以帮助Linux系统管理员和开发者更有效地管理文件系统结构和组织项目文件。