
技术弄巷
在Linux系统中,文件链接是一种重要的文件共享机制,它能让多个文件名指向同一个文件内容,既节省存储空间,又方便文件管理。常见的文件链接分为硬链接和软链接(符号链接)两种,二者在原理、特性和使用场景上存在显著差异。本文将从实操角度出发,详细拆解两种链接的创建方法、核心特性,并清晰对比二者区别,帮助大家快速掌握文件链接的正确使用方式。一、文件链接的两种类型
1、硬链接
硬链接的本质,是指向源文件所在inode的另一个指针,它并非独立的文件,而是与源文件共享同一个inode和数据块。这意味着,硬链接与源文件在底层数据层面完全等价。
创建命令:
# 硬链接创建命令格式:ln 源文件 目的文件# 说明:执行后,目的文件将成为源文件的硬链接,共享同一inode和数据ln 源文件 目的文件
实操示例:
# 查看源文件/opt/file01的详细信息,可见链接数(第二列)为2[root@localhost ~]# ls -l /opt/file01 -rw-r--r--.2 root root 297月1815:24/opt/file01# 查看硬链接文件/tmp/AA的详细信息,链接数同样为2,与源文件权限、大小、时间完全一致[root@localhost ~]# ls -l /tmp/AA -rw-r--r--.2 root root 297月1815:24/tmp/AA# 查看源文件/opt/file01的inode编号(用于唯一标识文件)[root@localhost ~]# ls -i /opt/file01 192421/opt/file01# 查看硬链接文件/tmp/AA的inode编号,与源文件完全相同,证明共享底层数据[root@localhost ~]# ls -i /tmp/AA 192421/tmp/AA
2、软链接/符号链接【常用】
与硬链接不同,软链接是一个独立的文件,它自身有专属的inode和数据块,但数据块中并不存储真实文件内容,仅保存指向源文件的路径(文件名)。可以把软链接理解为源文件的“快捷方式”。
创建命令:
# 软链接创建命令格式:ln -s 源文件 目的文件# 说明:-s参数指定创建软链接,目的文件会记录源文件的路径,而非共享数据ln -s 源文件 目的文件
实操示例:
# 创建软链接:将/opt/file02的软链接创建为/tmp/BB[root@localhost ~]# ln -s /opt/file02 /tmp/BB # 查看源文件/opt/file02的详细信息,链接数为1(无其他链接)[root@localhost ~]# ls -l /opt/file02 -rw-r--r--.1 root root 9 7月18 15:26/opt/file02# 查看软链接文件/tmp/BB的详细信息:# 首字符"l"表示为链接文件,权限固定为lrwxrwxrwx,箭头"->"后为指向的源文件路径[root@localhost ~]# ls -l /tmp/BB lrwxrwxrwx.1 root root 11 7月18 15:26/tmp/BB ->/opt/file02# 查看源文件/opt/file02的inode编号[root@localhost ~]# ls -i /opt/file02 192464 /opt/file02# 查看软链接文件/tmp/BB的inode编号,与源文件不同,证明是独立文件[root@localhost ~]# ls -i /tmp/BB 16786690 /tmp/BB
3、硬链接与软链接的核心区别
软链接特性:
- 依赖源文件:若源文件被删除或移动,软链接将失效(出现“broken link”提示);
硬链接特性:
- 不依赖源文件:即使源文件被删除,硬链接文件仍可正常访问(因为共享数据块);
- 适用范围有限:仅支持对文件创建硬链接,不支持目录;
- 不支持跨分区:由于不同分区的inode编号可能重复,硬链接无法跨分区创建。

