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的拷贝,但是他们指向的文件内容其实是一样的