软链接和硬链接对比
介绍
软链接和硬链接是两种不同的文件链接方式。当源文件被修改时,软\硬链接文件也会相应的修改;当软\硬链接文件被修改时,源文件也会被修改。所以,软链接和硬链接在功能上是相同的,根据使用场景选用链接方式。
软硬链接查询,第一个字母d表示目录,-表示文件(硬链接的表示跟文件相同),l(表示软连接)。右边一点的数字,例如2,表示当前文件的硬链接数量。当硬链接数量变为0时,文件才能被删除。
特征对比
- 软链接
- 指向目标文件:是一个独立文件,包含了指向的目标文件\目录的路径。存的是路径,不是内容。
- 可以指向目录
- 可以跨文件系统:可以指向不同文件系统的文件或者目录,常见的文件系统有: ext4、NTFS、FAT32等。
- 删除影响
- 删除源文件,软链接变成“悬空链接”,即无效链接
- 删除软链接不会影响目标文件
- 硬链接
- 指向相同数据块:指向目标文件数据块的另一个目录项,即C语言中的,多个指针指向同一个内存,亦或者可称为多扇门可以去到同一个地方。
- 不能跨文件系统
- 不能指向目录
- 删除影响
- 删除源文件,不会影响硬链接。硬链接指向的是数据块,所以只要数据块不被删,就没问题,即直到所有硬链接都被删除。
- 删除硬链接不会影响其他硬链接和源文件。
- 磁盘差异
软链接和硬链接在磁盘占用方面差距不大,但是了解后对它们之间的区别会有更加深刻的理解。
假设有一个大小为1 GB的文件。
- 软链接:生成一个独立文件(软链接文件),里面存储了该文件的路径,但这个软链接文件一般都非常小,几字节到几百字节。
- 硬链接:在数据块上再增加一个目录项,几乎不占用额外磁盘空间。
从软连接和硬链接的磁盘占用差异可以看出,硬链接特别适合作为文件备份,因为不占用额外磁盘空间,并且备份文件会自动与源文件同步,直接访问磁盘块,不需要通过路径查找,访问速度更快。
使用方法
# 软链接,ln是link的缩,-s是symbolic的缩写,所以软链接也称为符号链接
ln -s file_path linked_file_path
# 硬链接
ln file_path linked_file_path
使用场景
-
软链接
- 需要跨文件系统,链接目录。(硬链接不能做到)
- 创建快捷方式
- 希望路径明确,易于管理和更新
-
硬链接
- 节约磁盘空间,避免重复数据
- 希望保持数据一致性
- 在同一文件系统内提高访问效率
- 数据备份
[!NOTE]
为什么软连接更适合作为快捷方式?因为如果采用硬链接,当源文件被删除时,硬链接仍然能访问该磁盘块,那么这个快捷方式仍然能起作用。如果采用软连接,当源文件被删除时,软连接会失效,快捷方式自然也就不能用了。