在 Linux 系统中, ln 命令用于创建链接文件,有两种链接类型:硬链接和软链接(符号链接)。
语法格式: ln [选项] [源文件或目录] [目标文件或目录] 。
常见选项:
- -s :创建软链接(符号链接),若不使用该选项则默认创建硬链接。
- -f :强制创建链接,无论目标是否存在。
示例:
- 创建硬链接:比如有一个文件 test.txt ,要为它创建一个硬链接 test_hardlink.txt ,命令为 ln test.txt test_hardlink.txt ,此时两个文件有相同的 inode 号,共享数据。硬链接实质是创建一个inode号相同的文件
- 创建软链接:为 test.txt 创建一个软链接 test_symlink.txt ,命令是 ln -s test.txt test_symlink.txt ,软链接类似快捷方式,有自己独立的 inode 号,指向源文件。
使用 ln 命令时,要注意目标文件或目录的权限等问题,以免创建失败。
在 Linux 系统中,软连接(符号链接)和硬链接有以下区别:
本质:硬链接是文件的另一个入口,和原文件共用 inode 节点,本质上是同一个文件的不同别名。软链接是一个特殊文件,有自己独立的 inode 节点,其内容是指向原文件的路径。
文件属性:硬链接和原文件的文件大小、权限、修改时间等属性完全相同,它们共享数据块。软链接文件大小通常是所指向路径的字符串长度,权限一般为 lrwxrwxrwx ,修改时间是软链接自身的创建或修改时间。
删除原文件影响:删除原文件后,硬链接仍然存在且能正常访问,因为数据块还在,只要还有一个硬链接存在,文件就不会被真正删除。删除原文件后,软链接会变成无效链接,访问时会提示找不到文件,因为它依赖原文件的路径。
跨文件系统:硬链接不能跨越不同的文件系统,因为 inode 号只在同一文件系统内有效。软链接可以跨越不同文件系统,只要路径正确就能指向其他文件系统中的文件。
创建对象:硬链接只能针对文件创建,不能对目录创建。软链接可以对文件或目录创建。