Linux中软链接(soft link)和硬链接(hard link)的区别

简介

linux中, 有一个和windows快捷方式相似的功能,叫做链接 (Links). 在linux中, 创建链接可以使用命令ln.

但是ln可以创建两张链接, 一种是软链接 (soft link), 一种是硬链接(hard link)

软链接可以用 ln -s src dest 来创建

硬链接可以用 ln src dest 来创建

区别

区别是啥呐?

首先linux中每个文件都有一个指定的Inode。 这个Inode就像是数据库中的一条数据。每个Inode都有一个自己指定的编号。

比如我们有一个文件 A(Inode # 1)。

软链接

假如我们使用软链接创建一个文件B,那么这个文件B会有自己的一个Inode -> B (Inode #2) 。 在这种情况下,文件B相当于一个快捷方式,指向了文件A的地址。

这种情况下,假如我们删除了文件A,那么文件B就指向一个不存在的地址,就相当于失效了。

硬链接

如果用硬链接,就不一样了。硬链接不是指向文件的地址,而是直接指向了文件的Inode。

比如用硬链接创建文件A的链接C,那么文件C会有和A一样的Inode ID -> C (Inode #1)。

这种情况下,假如我们删除了文件A,文件C依然指向文件本身,所以链接C依旧可用。

可以把C看作是A的拷贝,但是他们指向的文件内容其实是一样的