ln--链接
在Linux系统中,ln命令是一个非常有用的工具,用于创建链接(link),将一个文件或目录链接到另一个位置。链接允许一个文件或目录可以同时存在于多个位置,而不会占用额外的磁盘空间。ln命令支持创建硬链接和软链接两种类型的链接。
语法
1 | ln [option] [target] [linkname] |
参数
| 参数 | 说明 |
|---|---|
| -s | 创建软连接 |
| -f | 删除已存在的目标文件 |
| -n | 如果 LINK_NAME 是指向目录的符号链接,则将其视为普通文件 |
| -v | 打印详情 |
| -b | 对每个已存在的目标文件进行备份 |
| -d | 允许超级用户尝试硬链接目录(注意:由于系统限制,即使对于超级用户,很可能会失败) |
| -r | 创建相对于链接位置的符号链接 |
| -P | 直接创建指向符号链接的硬链接 |
| -L | 引用作为符号链接的目标文件 |
硬链接和软链接
硬链接(Hard Link)和软链接(Symbolic Link,也称为符号链接或软连接)是在文件系统中创建链接的两种方法。它们在功能和使用方式上有一些区别:
- 存储位置:
硬链接:硬链接是指向同一个文件的多个目录项。它们共享相同的inode和数据块,实际上是指向相同的文件内容。删除原始文件不会影响硬链接,只有当所有硬链接和原始文件都被删除时,文件的内容才会被释放。
软链接:软链接是一个独立的文件,其中包含指向目标文件或目录的路径。软链接本身只是一个指针,它保存了目标文件的路径信息。如果原始文件被删除或移动,软链接将失效,无法访问目标文件。
- 跨文件系统:
硬链接:硬链接只能在同一个文件系统中创建,因为它们是基于inode的链接。不能在不同的文件系统上创建硬链接。
软链接:软链接可以跨越不同的文件系统,因为它们是基于路径的链接。可以在不同的文件系统上创建软链接。
- 目录链接:
硬链接:硬链接不能创建到目录上。因为目录已经包含了硬链接,再创建一个硬链接可能会导致循环链接的问题。
软链接:软链接可以创建到目录上,并且可以跨越文件系统边界。
- 文件类型:
硬链接:硬链接只能链接到文件,无法链接到目录或特殊文件。
软链接:软链接可以链接到文件、目录或特殊文件。
总的来说,硬链接提供了更强的链接关系,因为它们共享相同的inode和数据块,看起来像是同一个文件的多个副本。而软链接则更加灵活,可以链接到不同的文件系统和目录,并且可以链接到目录本身。
示例
创建软链接
1 | ln -s /root/hy/1 sym1 |
创建硬链接
1 | ln /root/hy/1 hard1 |
查看,可以看到软链接会有->标识链接信息,而硬链接创建的就是一个普通文件
1 | [root@master193 ln]# ls -lh |
除了用ls -l 查看链接信息外,还可以使用readlink命令查看
1 | [root@master193 ln]# cat sym1 |


