软链接的原理:就跟我们在window
创建链接(软连接和硬链接)
linux中文件存储的方式,是文件名和文件内容单独分开存储在硬盘上的。
每个文件的文件内容被分配到一个标示号码,就是 inode。因此每个文件名都绑定到它的文件内容(用 inode 标识)
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 才会被删去。
创建硬链接时 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 软链接可以指向目录,硬链接不行。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务