软链接 vs. 硬链接 (2)

我们用下面这张图来进行一下说明,我们为 myfile.txt 创建了一个软链接 softlink。可以看出,它的 inode 和 myfile.txt 的 inode 是两个完全不同的索引节点,myfile.txt 的数据块记录的是文件的内容,而软链接的数据块记录的是它指向文件的路径。

 

软链接 vs. 硬链接

 

软链接的作用之一也是方便文件的管理,比如原文件的路径比较复杂,我们可以在简单的路径下创建一个软链接,这样比较方便用户访问。但是和硬链接不同的是,一旦原文件被删除,那么软链接就成了一个“死链接”,指向了一个不存在的文件。

 

软链接 vs. 硬链接

 

 

软链接可以用命令 ln -s [源文件名或目录] [软链接文件名] 来进行创建。和硬链接不同之处在于,对不存在的文件也可以创建软链接,可以跨文件系统,对文件或者目录都可以创建软链接。

 

举一个例子,比如我们为 myfile.txt 创建一个软链接 softlink。通过 ls -li 命令查看,发现 inode 号完全不同,并且 myfile.txt 的链接次数还是 1,并没有增加,说明这里的链接次数是指硬链接,通过软链接我们可以读取源文件的内容。

 

软链接 vs. 硬链接

 

删除原文件,软链接变成了“死链接”,通过它再去读取原来的文件内容,系统已经提示文件不存在了。

 

软链接 vs. 硬链接

 

通过上面的实验验证,软链接的特点如下:

1) 软链接和其所指向的文件具有不同的 inode,并且其数据块存储的内容为其所指向文件的路径

2) 创建软链接,其指向文件的硬链接次数不会增加

3) 删除软链接并不影响原文件,但删掉原文件,软链接会成为一个“死”链接

4) 软链接可以指向文件,也可以指向目录

5) 软链接可以指向不存在的文件或目录

6) 软链接可以跨文件系统创建

 

 

最后

 

不管用软链接还是硬链接,都不会将原来的文件复制一份,都只是占用了磁盘较小的空间,但它们的原理还是完全不一样的。本文从 inode 的角度切入,对软链接和硬链接进行了解释。感兴趣的同学可以对 inode 结构体再做进一步研究,这样能够帮助我们更好的理解 Linux 的工作原理。

 

 

相关阅读:

《Linux 目录详解》

《虚拟机安装 Linux 最完整攻略》

《Xshell 与 Xftp 的安装与使用》

《Linux,Unix,GNU 到底有什么样的渊源?》

 

 

软链接 vs. 硬链接

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygyyx.html