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

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 Linux文件属性–软链接和硬链接,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

软链接

软链接(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的快捷方式功能,常用。硬链接提供了防止文件被误删的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142657.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!