Linux文件属性--软链接和硬链接

文章详细介绍了Linux系统中软链接(SymbolicLink)和硬链接(Hardlink)的概念、创建方法以及它们之间的区别。软链接类似Windows的快捷方式,可以跨磁盘和分区,但删除源文件会导致软链接失效。硬链接通过索引节点(Inode)连接文件,即使删除源文件,只要硬链接存在,仍可访问内容。硬链接不支持目录,而软链接可以为目录创建。
摘要由CSDN通过智能技术生成

软链接

软链接(Soft Link)又叫符号链接(Symbolic Link ),是linux特殊文件的一种,文件类型为l,它的数据是它所链接的文件或目录的路径。软链接可以跨磁盘和 分区,也可以为目录建立软链接。删除源文件或修改源文件名称,就会破坏链接关系。导致根据已有的软连接文件定位不到源文件。
在这里插入图片描述
创建软链接文件: ln -s 原文件 目标文件
创建软链接目录: ln -s 原目录 目标目录
注意:创建软链接的源文件是需要存在的,要创建的软链接文件是不能存在的,是要用ln -s 命令创建的
演示文件软连接:
[root@localhost test]# cat sourceFile
测试软链接和硬链接的数据
[root@localhost test]# ln -s sourceFile softLinkFile
[root@localhost test]# ls -li
总用量 4
33590019 lrwxrwxrwx. 1 root root 10 2月 24 20:48 softLinkFile -> sourceFile
33590020 -rw-r–r–. 1 root root 37 2月 24 20:38 sourceFile
[root@localhost test]# cat softLinkFile
测试软链接和硬链接的数据
通过测试可以发现 第一列的 数字表示 的是文件的inode, softLinkFile 和 sourceFile 的 inode(index node)索引节点不一样,说明它们不是同一个文件。权限列前面的l表明了,文件类型和普通文件不一样,属于软连接文件特有的。权限列后面的1表示 文件引用次数。
演示目录软链接
[root@localhost test]# mkdir sourceDir
[root@localhost sourceDir]# touch file.txt
[root@localhost test]# ln -s sourceDir softLinkDir
[root@localhost test]# ls -li
总用量 4
33590022 lrwxrwxrwx. 1 root root 9 2月 24 21:12 softLinkDir -> sourceDir
33590012 drwxr-xr-x. 2 root root 22 2月 24 21:11 sourceDir
[root@localhost softLinkDir]# ls
file.txt
演示修改目录名称
[root@localhost test]# mv sourceDir modifysourceDir
[root@localhost test]# ll
这里出现了被软连接的源文件出现闪烁
再访问softLinkDir
[root@localhost test]# cd softLinkDir
-bash: cd: softLinkDir: 没有那个文件或目录
说明破坏了链接关系。需要重新建立链接关系
在原链接还存在的情况下,不能再创建同一目录下目标文件名称相同的链接,需要先删掉才行。
[root@localhost test]# ln -s modifysourceDir softLinkDir
ln: 无法创建符号链接"softLinkDir": 文件已存在
[root@localhost test]# rm softLinkDir
rm:是否删除符号链接 “softLinkDir”?y
再重新创建链接关系
在这里插入图片描述

硬链接

硬链接(hard link)是指通过索引节点(Inode)来进行连接。在Linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index Inode)简称Inode,即在系统中文件的编号。
文件的硬链接是一个指向inode的目录项。硬链接从表面上来说就是一个文件,但是该文件是基于原始文件创建的链接文件。硬链接与源文件指向相同的inode,因此其数据也是完全一样的。
在Linux文件系统中,多个文件名指向同一个索引节点(inode号相同)是正常且允许的。这种情况的文件就称为硬链接。
如果存在硬链接,删除原文件将不会删除文件的数据。通过硬链接仍然能够访问文件的数据。这是因为当有目录项指向inode的时候,inode会增加引用计数。通常情况下引用计数是1,当有一个硬连接时为2,再有一个硬链接的时候就变成了3。
当我们删除普通文件(无硬链接)的时候,首先会删除目录项中的内容,然后将inode的引用计数减1,如果此时inode中引用计数为0,则删除该inode,同时删除相关联的数据。如果非0,则只删除目录项,而不删除相关内容。所以,如果存在硬链接则可以正常访问文件内容。
在这里插入图片描述
数据演示:
创建硬链接文件: ln 原文件 目标文件
[root@localhost test]# ln sourceFile hardLinkFile
[root@localhost test]# ls -li
33590020 -rw-r–r–. 2 root root 37 2月 24 20:38 hardLinkFile
33590020 -rw-r–r–. 2 root root 37 2月 24 20:38 sourceFile
[root@localhost test]# cat hardLinkFile
测试软链接和硬链接的数据
通过测试发现 两者的inode是相同的,都是33590020,表明它们指向的是同一个inode表示的数据。文件的引用计数为2.表明存在一个硬链接。其实源文件也是一个硬链接文件(文件的引用计数为1),我们手动创建的硬链接文件和源文件没有什么不同。
如何查找文件的所有硬链接文件:
find . -inum inode_number #把源文件也查询到了
[root@localhost test]# find . -inum 33590020
./sourceFile
./hardLinkFile
注意:不能创建目录硬链接
[root@localhost test]# ln modifysourceDir hardLinkDir
ln: “modifysourceDir”: 不允许将硬链接指向目录
原因:在目录中除了文件相关内容外,还有一个指向父目录的目录项,"…"目录。如果我们在其它目录创建该目录的硬链接,那么该内容就会被改写,从而导致混乱。

软链接和硬链接的区别

1.  ln -s 创建软连接, ln 创建硬链接
2. 目录不能创建硬链接, 且不能跨分区系统创建
3. 软连接支持文件和目录, 且能跨分区系统, 常用
4. 硬链接文件与源文件 inode 相同, 而软连接是不同的
5. 删除软链接文件和硬链接文件, 对源文件没有任何的影响
6. 删除源文件, 软链接失效, 硬链接无影响(还可以访问内容)
7. 删除源文件和所有的硬链接文件, 整个文件会被真正的删除
8. 软链接类似于windows的快捷方式功能,常用。硬链接提供了防止文件被误删的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值