Linux常用命令——详解软、硬链接

详解软、硬链接

在这里插入图片描述

参考阅读

Linux基础命令大礼包

Linux的文件管理权限

前言

对于Linux中的软、硬链接的解释与说明,首先要从inode、block说起,这二者的背景在于Linux的ext4这个文件系统

ext4文件系统将分区分为两大部分

inode(i节点)  128Byte 时间戳、权限、大小、位置
block(块)  1、2、4KB 默认为 4KB block 用于实际的数据存储,存储时不一定按顺序的,每个文件都有一个inode号,一个block是存储空间的最小单位

索引号:通过索引号来对文件进行查找;可以理解为图书馆的图书分类与目录

注意:

在 inode 信息中,不记录文件名称,而是把文件名记录在上级目录的 block 中。

目录的 block :

​ 记录的是这个目录下所有一级子文件和子目录的文件名及 与node 的对应

了解到以上的信息,下面开始详解软、硬链接文件的具体含义

一、硬连接

命令:

[root@localhost ~]# touch test
#建立源文件
[root@localhost ~]# ln /root/test /tmp/test-hard
#给源文件建立硬链接文件 /tmp/test-hard
[root@localhost ~]# ll -i /root/test /tmp/test-hard
262147 -rw-r--r-- 2 root root 0 6月 19 10:06 /root/test
hard
262147 -rw-r--r-- 2 root root 0 6月 19 10:06 /tmp/test-hard
#查看两个文件的详细信息,可以发现这两个文件的 inode 号是一样的,"ll"等同于"ls -l"

以上命令是创建了硬链接,在文件系统中的结构如下图在这里插入图片描述

详细步骤:

注意,在上图中省略了/目录到/下的root目录的迭代

迭代过程,每轮迭代的前提是要有权限访问
1、首先找到/的inode(根目录的inode是系统已知的,inode号是2),然后判断用户是否有权限访问根目录的block,
2、有,就可以在/的block中访问到/root的文件名及对应的inode号
3、通过/root/目录的inode号,可以查找到/root/目录的inode信息,接着判断用户是否有权限访问 /root/目录的block
4、有,则可以从/root/目录的block中读取到test文件的文件名及对应的inode号
5、通过 test 文件的 inode 号,就可以找到test文件的inode信息,接着判断用户是否有权限访问 test文件的block。
6、有,则可以读取 block 中的数据,这样就完成了 /root/test 文件的读取与访问

/ 到 /root 到 /root/tmp 到 /root/tmp/test-hard的过程与上述过程完全一致 

二、软链接

命令:

[root@localhost ~]# touch check
#建立源文件
[root@localhost ~]# ln -s /root/check /tmp/check-soft
#建立软链接文件
[root@localhost ~]# ll -id /root/check /tmp/check-soft
262154 -rw-r--r-- 1 root root 0 6月 19 11:30 /root/check
917507 lrwxrwxrwx 1 root root 11 6月 19 11:31 /tmp/ check-soft -> /root/check
#软链接和源文件的 inode 号不一致,软链接通过 -> 明显地标识出源文件的位置
#在软链接的权限位 lrwxrwxrwx 中,l 就代表软链接文件

以上命令是创建了软链接,在文件系统中的结构如下图

在这里插入图片描述

详细步骤:

迭代过程,每轮迭代的前提是要有权限访问
1、首先找到/的inode,然后判断用户是否有权限访问根目录的block
2、有,就可以在/的block中访问到/tmp的文件名及对应的inode号
3、接着访问/tmp/目录的inode信息,判断用户是否有权限访问/tmp/目录的block
4、有,就会在block中读取到软链接文件check-soft的inode号,因为软链接文件会真正建立自己的 inode索引和block,所以软链接文件和源文件的 inode 号是不一样的
5、访问软链接block中指向真实文件的inode 至此完成从软连接文件到真实文件的访问

/ 到 /root 到 /root/check的过程与上述过程完全一致 不做过多赘述,还是一个迭代的过程,前提是目录要有访问的权限

三、总结比较

不同:
	硬链接不会建立自己的 inode 索引和 block(数据块),而是直接指向源文件的 inode 信息和 block,所以硬链接和源文件的 inode 号是一致的;
	软链接会真正建立自己的 inode 索引和 block,所以软链接和源文件的 inode 号是不一致的,而且在软链接的 block 中,写的不是真正的数据,而仅仅是源文件的文件名及 inode 号
	软链接可以链接目录文件、可以跨分区链接;硬链接是不可以的

相同:
	修改任一链接文件,源文件也会被修改
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值