软链接和硬链接对比

介绍

软链接和硬链接是两种不同的文件链接方式。当源文件被修改时,软\硬链接文件也会相应的修改;当软\硬链接文件被修改时,源文件也会被修改。所以,软链接和硬链接在功能上是相同的,根据使用场景选用链接方式

image

软硬链接查询,第一个字母d表示目录,-表示文件(硬链接的表示跟文件相同),l(表示软连接)。右边一点的数字,例如2,表示当前文件的硬链接数量。当硬链接数量变为0时,文件才能被删除。

特征对比

  1. 软链接
    • 指向目标文件:是一个独立文件,包含了指向的目标文件\目录的路径。存的是路径,不是内容。
    • 可以指向目录
    • 可以跨文件系统:可以指向不同文件系统的文件或者目录,常见的文件系统有: ext4、NTFS、FAT32等。
    • 删除影响
      • 删除源文件,软链接变成“悬空链接”,即无效链接
      • 删除软链接不会影响目标文件
  2. 硬链接
    • 指向相同数据块:指向目标文件数据块的另一个目录项,即C语言中的,多个指针指向同一个内存,亦或者可称为多扇门可以去到同一个地方。
    • 不能跨文件系统
    • 不能指向目录
    • 删除影响
      • 删除源文件,不会影响硬链接。硬链接指向的是数据块,所以只要数据块不被删,就没问题,即直到所有硬链接都被删除。
      • 删除硬链接不会影响其他硬链接和源文件。
  3. 磁盘差异

软链接和硬链接在磁盘占用方面差距不大,但是了解后对它们之间的区别会有更加深刻的理解。

假设有一个大小为1 GB的文件。

  • 软链接:生成一个独立文件(软链接文件),里面存储了该文件的路径,但这个软链接文件一般都非常小,几字节到几百字节。
  • 硬链接:在数据块上再增加一个目录项,几乎不占用额外磁盘空间。

从软连接和硬链接的磁盘占用差异可以看出,硬链接特别适合作为文件备份,因为不占用额外磁盘空间,并且备份文件会自动与源文件同步,直接访问磁盘块,不需要通过路径查找,访问速度更快。

使用方法

# 软链接,ln是link的缩,-s是symbolic的缩写,所以软链接也称为符号链接
ln -s file_path linked_file_path
# 硬链接
ln file_path linked_file_path

使用场景

  1. 软链接

    • 需要跨文件系统,链接目录。(硬链接不能做到)
    • 创建快捷方式
    • 希望路径明确,易于管理和更新
  2. 硬链接

    • 节约磁盘空间,避免重复数据
    • 希望保持数据一致性
    • 在同一文件系统内提高访问效率
    • 数据备份

    [!NOTE]

    为什么软连接更适合作为快捷方式?因为如果采用硬链接,当源文件被删除时,硬链接仍然能访问该磁盘块,那么这个快捷方式仍然能起作用。如果采用软连接,当源文件被删除时,软连接会失效,快捷方式自然也就不能用了。

posted @ 2024-05-21 15:43  顾子郤  阅读(21)  评论(0编辑  收藏  举报