Linux软硬链接
Posted 好想有猫猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux软硬链接相关的知识,希望对你有一定的参考价值。
前言
上篇Linux的文章,我们学习到了文件系统中,对磁盘文件的管理。
而本篇文章,我们要以文件系统的基础知识,了解软硬链接
话不多说,马上开始今天的学习。
文章目录
一. 软链接
1. 软链接的语法
我们先创建一个myfile.txt的文件,并写入一些内容
软链接
ln -s 文件名 软链接名
2. 软链接的本质
我们通过cat软链接,也可以查看my_file.txt的内容
同时我们发现可以通过ll -i
指令查看文件的inode编号
蓝色部分都是文件的inode编号
我们发现
软链接my_soft的inode和myfile.txt不一样
my_soft软链接是一个
独立的新的链接文件
,有自己的inode编号
,也一定有自己的属性和内容
软链接内部放的是自己所指向的文件的路径
3. 软链接的应用
有了对软链接的认识,我们接下来接触软链接的应用
比如我们创建一个路径
然后写一个打印hello world的小程序,放到这个深路径中
然后我们可以通过软链接链接这个小程序
然后我们可以通过这个软链接使用程序
这样看下来,我们可以通过软链接,将一个不存在本目录之下的程序,不用指明路径就可以直接使用
软链接其实就相当于Window下的快捷方式
二. 硬链接
1. 硬链接的语法
硬链接
ln 文件名 硬链接名
2. 硬链接的本质
我们通过cat指令,同样可以查看到myfile.txt的内容
那硬链接和软链接有什么不同呢?
我们再用ll -i
指令查看一下文件的inode
我们发现硬链接和软链接形成的文件的inode编号不同,我们上面说了,软链接是新的独立的文件,会有自己的inode,但我们这里发现
硬链接的文件的inode和链接文件的inode一样
,所以可以肯定的是硬链接并没有产生新文件。
my_hard硬链接和目标文件
共用一个inode编号
,这代表硬链接和目标文件共用一个inode
硬链接本质其实是在目录里新建一个文件名和该文件inode的映射关系
而硬链接个数
是inode属性
之一,记录该文件同时被几个文件名/硬链接指向。
当一个文件有多个硬链接
时,rm删除并不会达成效果,因为硬链接个数属于属性之一,当文件的硬链接个数大于1时,rm指令本质只会将硬链接个数-1
,并不会真正删除文件,只会删除指定的硬链接
。当硬链接个数为1
时,rm删除,才会真正的删除文件。
3. 软链接补充知识
这里想通过软硬链接,证明软链接文件存储的内容是文件的路径。
我们创建一个myfile.txt文件,并且该文件还有两个硬链接,和一个软链接
myfile.txt内容是5句"hello world"
接下来,我们尝试删除myfile.txt这个硬链接,此时,因为硬链接个数大于1,rm并不会删除源文件,只会将硬链接个数-1
myfile.txt删除后,my_hard和my_hard1这两个硬链接没有问题,硬链接个数确实-1,文件内容也还是5句"hello world",但是我们发现软链接失效了。
这是因为软链接内容存储的是绝对路径,类似
~/lesson/mydemo/myfile.txt
,当我们将myfile.txt这个文件名删除,软链接自然找不到,所以就失效了。
4. 硬链接的应用
我们知道目录也是文件,所以
目录的inode结构体和普通文件的inode结构体是相同的
,那么目录也会有其硬链接个数,我们创建一个目录,并查看其硬链接个数
我们发现目录一创建,其硬链接数就是
2。那除了dir1这个硬链接,还有什么硬链接呢?
我们再通过ll -a -i
指令同时显示隐藏文件和文件inode编号
这时我们想起来,
.
也指向当前目录,并且二者的inode编号相同,所以.
是当前目录的一个硬链接
既然.
是目录的一个硬链接,那. .
自然也是目录的硬链接,是上级目录的硬链接
。
我们知道,目录也是文件,这样文件就会像一棵多叉树
,但是要想目录的上下级切换,就需要 .. 和当前目录的子目录名
. . 实现向上级目录
的跳跃,子目录名实现向下级目录
的跳跃
但是,除了. 和. .这两个硬链接,Linux不允许对目录做硬链接
,因为可能出现环形目录的情况,可能会打破文件系统目录的有向无环图结构,可能创建目录循环。
结束语
软硬链接的学习大致如此,感谢阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
Linux的软硬链接
Linux链接分为两种,一种是硬链接一种是符号链接。
硬链接:
硬链接是指通过索引节点来进行。再Linux文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点(Inode Index)。在Linux中,多个文件指向同一个索引节点是存在的,一般这种连接就是硬链接。硬链接的作用就是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接给重要文件,防止“误删”。当删除文件的时候只删除一个链接并不影响索引本身和其他的链接,只有当最后一个链接被删除后,文件的数据块和目录的链接才会被真正的释放。也就是说,文件真正删除的条件是与之相关的所有硬链接和文件均被删除。
软链接:
软链接也叫作符号链接。软链接文件类似于windows的快捷方式。他其实是一个特殊的文件。在软链接中,文件实际上是一个文本文件,其中包含另一文本的位置信息。
以上是关于Linux软硬链接的主要内容,如果未能解决你的问题,请参考以下文章