创建软连接和硬链接

前言

硬链接的原理:使链接的两个文件共享同样的文件内容,也就是同样的 inode。
硬链接有一个缺陷:只能创建指向文件的硬链接,不能创建指向目录的硬链接。但软链接可以指向文件或目录。

软链接的原理:就跟我们在window

ln 命令

创建链接(软连接和硬链接)
linux中文件存储的方式,是文件名和文件内容单独分开存储在硬盘上的。
每个文件的文件内容被分配到一个标示号码,就是 inode。因此每个文件名都绑定到它的文件内容(用 inode 标识)

创建软连接和硬链接_第1张图片

创建硬链接

cd
mkdir test
cd test

并且用 touch 命令创建一个新的空白文件:

touch file1

我们接着来创建一个文件 file2,使之成为 file1 的硬链接。
要创建硬链接,直接用 ln 命令,不加任何参数:

ln file1 file2

以上命令创建了 file1 的一个硬链接 file2。
但是我们可以用 ls -i 命令查看一下(-i 参数可以显示文件的 inode)。我们可以看到 file1 和 file2 的 inode 是一样的,都是 655571。当然你的电脑上应该和我不一样,是其它数字吧。

如果我们用 rm file2 来删除 file2,那么对 file1 没什么影响。如果我们用 rm file1 来删除 file1,对 file2 也没什么影响。所以,对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除。

只有既删除 file1 又删除 file2,它们共同指向的文件内容才会消失,也就是那个 inode 才会被删去。
创建软连接和硬链接_第2张图片
原理图
创建软连接和硬链接_第3张图片

创建软链接

创建硬链接时 ln 命令不带任何参数,但是要创建软链接需要加上 -s 参数

ln -s file1 file2

用 ls -l 命令查看一下,会发现形式和之前的硬链接不一样噢。file2 的信息是这样的: file2->file1,表示 file2 指向 file1。

file2 的文件信息里,第一列表示权限的第一个字母变成了 l,表示 link(链接)。之前硬链接的时候是没有l的,硬链接外表看起来就和普通文件类似。file2 的颜色是浅蓝色,也说明是链接文件。

我们用 ls -l 命令查看文件信息的时候,第二列的那个 1,表示拥有相同 inode 号的文件数。不难理解,因为 file2 指向 file1,它们并没有指向同一块文件内容,所以它们的 inode 号不相同。

用 ls -i 看一下就知道了:

file1 的 inode 号仍然是 655571。而 file2 的 inode 号是 655574,不一样。

打开 file2 查看,发现和 file1 是一样的。这不难理解,因为 file2 这个软链接只是 file1 的一个快捷方式,它指向的是 file1,所以显示的是 file1 的内容。但其实它自身的 inode 和 file1 并不一样,也就是文件内容不一样。

1 如果我们删除了 file2,没什么大不了,file1 不会受到影响。但是如果删除了 file1,那么 file2 会变成“死链接”,因为指向的文件不见了。
2 软链接可以指向目录,硬链接不行。

创建软连接和硬链接_第4张图片
原理图:
创建软连接和硬链接_第5张图片

参考链接

该文为本人学习的笔记,方便以后自己复习。参考以及图片来自
慕课网专栏:https://www.imooc.com/read/39
取其精华整合而成。

你可能感兴趣的:(Linux,linux,ubuntu,centos,服务器,运维)