目录
0.文件系统
1.软硬链接
1.1见一下软硬链接
1.2软硬链接的特征
1.3软硬链接是什么,有什么作用(场景)
0.文件系统
Linux--文件系统-CSDN博客
1.软硬链接
1.1见一下软硬链接
1.这是软链接
这个命令在Unix和Linux系统中用于创建一个符号链接(也称为软链接或软连接)。具体来说,
ln -s file2.txt file_soft.link
命令做了以下事情:
-s
:这是一个选项,表示要创建一个符号链接(而不是硬链接)。file2.txt
:这是你要链接到的原始文件或目录。file_soft.link
:这是你要创建的符号链接的名称。执行这个命令后,
file_soft.link
就会成为一个指向file2.txt
的符号链接。你可以像操作普通文件一样操作file_soft.link
,但实际上你只是在操作file2.txt
。例如,如果你使用cat
命令查看file_soft.link
的内容,你将会看到file2.txt
的内容。可以看到它们的inode是不一样的
2.这是硬链接
和建立软连接的区别就是,少了一个-s选项。
使用
cat
命令查看file_hard.link
的内容,你将会看到file1.txt
的内容。可以看到它们的inode是一样的。
1.2软硬链接的特征
根据上面的现象:
硬链接的特征:
- 硬链接是指向文件系统中已存在文件的引用,它们与原始文件共享相同的inode(索引节点)号和数据块。
- 硬链接只是文件的另一个名称或别名,它们与原始文件没有区别。
- 硬链接只能对已经存在的文件进行创建,不能跨文件系统或分区。
- 硬链接不能对目录进行创建,只能对文件创建。
- 删除一个硬链接文件并不会影响其他具有相同inode号的文件。只有当所有硬链接和原始文件都被删除时,文件的数据块才会被释放。
软链接(符号链接)的特征:
- 软链接是一个特殊的文件,其数据块内容是它所链接文件的路径名。
- 软链接可以跨越文件系统或分区,因为它只是保存了目标文件的路径。
- 软链接可以对文件或目录进行创建。
- 如果删除软链接所指向的原始文件,软链接就会变成“死链接”,因为它指向的文件已经不存在了,如果将软链接文件删除了,更不会影响目标文件,软链接就相当于一个快捷方式从。
- 软链接有自己的inode号,但与原始文件不同。
软硬链接的区别:
- inode号:硬链接与原始文件共享相同的inode号,而软链接则有自己的inode号。
- 跨文件系统:软链接可以跨文件系统或分区创建,而硬链接则不能。
- 对目录的引用:硬链接不能对目录进行创建,而软链接可以。
- 删除影响:删除一个硬链接文件并不会影响其他具有相同inode号的文件;而删除软链接所指向的原始文件,则会使软链接变成“死链接”。
- 文件类型:硬链接不是特殊的文件类型,它与原始文件完全一致;而软链接是特殊的文件类型,其数据块内容是目标文件的路径名。
我们还发现属性中有一列硬链接数
1.3软硬链接是什么,有什么作用(场景)
1.软链接的使用场景:
假如我有一个这样的项目结构;
然后我们再拷贝一个ls变成自己的可执行程序myls:
那如果我们的可执行程序被放到了一个很深的路径下,我们就只能这样运行我们的可执行程序,这就十分的麻烦了
创建软链接(快捷方式),所以软连接就是一个快捷方式,方便我们访问/执行我们的目标文件。
系统下的软链接:我们系统中有各种的库,一般就用软链接的方式,让我们使用它们的名字,就能找到对应的库
2.硬链接的使用场景:
我们给file1.txt建立了硬链接,我们可以看到硬链接(磁盘级的引用计数)数变成了2.
其实,硬链接就是一个文件名和inode的映射关系,建立硬链接,就是再指定目录下,添加一个新的文件名和inode number 的映射关系。inode number就像一个指针,有两个一样的inode number指向同一个属性,所以它的引用计数就是2(有2个文件名字符串通过inode number指向我的inode)。删除一个文件名和inode的关系,引用计数就变为1,再将硬链接删除,引用计数变为0,此时文件才会被删除。
1.硬链接主要用于在文件系统中为同一物理文件创建多个访问路径。例如,你可能希望在不复制文件内容的情况下,将某个文件同时放置在多个目录中。这时,你可以使用硬链接。这种方式也可以被理解成,为目标文件建立备份。
2.硬链接构建Linux的路径结构,让我们可以使用. ..来进行路径定位。
我们新建了一个目录test,当我们说一个目录的引用计数为2时,这通常是因为每个目录在其父目录中都有一个条目(即一个硬链接),并且它自己还有一个指向自己的
.
(当前目录)的硬链接。像bin目录引用计数为3,这是因为bin内部还存在一个目录指向通过inode number指向自己。在Linux中是不允许对目录 建立硬链接的,这会导致目录循环。例如,如果目录A硬链接到目录B,而目录B又硬链接回目录A,那么在遍历目录结构时,系统可能会陷入无限循环,导致无法正确定位或访问目录。
至此我们可以知道定位一个文件,只有两种方式:
1.通过路径(软连接)
2.直接找到目标文件的inode(通过inode number)(硬链接)