为解决文件的共享使用,Linux 系统引入了两种链接:硬链接(Hard Link)和软链接(Symbolic Link,也称为符号链接或symlink)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名。链接可由命令 ln 创建。
软链接和硬链接区别
类型 | 软链接 | 硬链接 |
创建 | ln -s 源文件 软链接文件 | ln 源文件 硬链接文件 |
文件系统 | 能跨文件系统 | 不能跨文件系统 |
Inode | 不同Inode | Inode和源文件相同 |
目录 | 软链接可以链接到文件或目录 | 硬链接不能链接到目录 |
文件类型 | 链接文件 | 普通文件 |
权限 | 和源文件不一致一般都是777 | 和源文件一致 |
链接数 | 不增加 | 增加 |
文件大小 | 会额外占用磁盘空间 | 不会额外占用磁盘空间 |
删除 | 删除源文件,软链接无法访问 | 删除源文件,硬链接可以访问 |
注:文件类型有普通文件、目录、字符设备文件、块设备文件、符号链接文件等
创建软链接和硬链接
## 创建目录
mkdir -p ~/testdir && cd ~/testdir
## 创建源文件
echo testlu > test
## 创建硬链接
ln test testhardlink
## 创建硬链接
ln -s test testsoftlink
## 查看文件属性信息
ls -lh
stat test
stat testhardlink
stat testsoftlink
补充文字描述
Linux下软链接和硬链接区别补充描述:
- 硬链接是对相同数据块的多个文件名引用,它们共享相同的inode和数据块;
- 软链接是一个指向另一个文件或目录的路径,它们不共享inode或数据块;
- 硬链接不能跨越不同文件系统,而软链接可以;
- 硬链接不能链接到目录,而软链接可以;
- 删除原始文件后,硬链接仍然存在,而软链接将指向不存在的目标;
- 硬链接没有自己的权限和所有权,而软链接有;
- 硬链接不占用额外的磁盘空间,而软链接需要存储目标文件的路径。