软链接用ln -s创建,类似快捷方式,可跨文件系统和指向目录,原文件删除后失效;2. 硬链接用ln创建,共享inode,不可跨文件系统或链接目录,删除一个不影响其他;3. ls -l可区分:软链接显示指向路径,硬链接与原文件属性相同;4. stat命令可查看inode,硬链接与原文件inode一致。
在Linux中,链接用于让文件拥有多个名称或路径。符号链接(软链接)和硬链接是两种不同类型的链接,它们的创建方式和行为有所不同。下面介绍如何创建以及它们的基本区别。
创建符号链接(软链接)
符号链接类似于快捷方式,它是一个指向另一个文件或目录的特殊文件。如果原文件被删除,符号链接会失效(变成“悬空链接”)。
使用 ln -s 命令创建符号链接:
ln -s 目标文件 链接名
例如:
- ln -s /home/user/file.txt mylink.txt —— 创建一个指向 file.txt 的软链接 mylink.txt
- ln -s /home/user/mydir mydir_link —— 可以为目录创建软链接
软链接可以跨文件系统,也能指向目录。
创建硬链接
硬链接是文件的另一个名称,它与原文件共享相同的 inode 和数据块。删除一个硬链接不会影响其他链接或文件数据,只有当所有硬链接都被删除时,文件数据才会被释放。
使用 ln 命令创建硬链接:
ln 目标文件 硬链接名
例如:
- ln file.txt hardlink.txt —— 创建 file.txt 的硬链接 hardlink.txt
硬链接不能指向目录(出于系统安全考虑),也不能跨文件系统。
查看链接信息
使用 ls -l 查看文件详情:
- 符号链接会显示为 lrwxrwxrwx,并标明指向的路径,如 mylink.txt -> file.txt
- 硬链接与原文件在 ls -l 输出中看起来完全一样,只是文件名不同
使用 stat 文件名 可查看 inode 编号,硬链接的 inode 与原文件相同。
基本上就这些。软链接更灵活,硬链接更“底层”,根据使用场景选择合适的方式。