Linux 软链接和硬链接简介
在Linux系统中,将文件分为两个部分:用户数据和元数据。
元数据即文件的索引节点(inode),用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件数据的block编号。
inode的默认大小为128Byte,新的ext4和xfs可以设置为256Byte。
在Linux中,元数据中的inode号,即索引节点号,才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过inode号寻找正确的文件数据块。
用户数据即文件数据块(block),记录了文件的真实内容,包括文件名,文件名会被记录在上级目录的block中。也就是说,目录的block中记录的是这个目录下所有一级子文件和子目录的文件名及inode的对应,而文件的block中记录的才是文件实际的数据。
block的大小可以是1KB、2KB、4KB,默认为4KB。block用于实际的数据存储,如果一个block放不下数据,则可以占用多个block,最后一个block可能不会占满,但也不能再放入其他文件的数据。多个block有可能是连续的,也有可能是分散的。
含义
硬链接共用同一个inode号,只是文件名不同。
当我们查找一个硬链接文件,比如/root/test-hard时,要经过以下步骤:
1)首先找到根目录的inode(根目录的inode是系统已知的,inode号是2),然后判断用户是否有权限访问根目录的block。 2)如果有权限,则可以在根目录的block中访问到/root的文件名及对应的inode号。 3)通过/root/目录的inode号,可以查找到/root/目录的inode信息,接着判断用户是否有权限访问/root/目录的block。 4)如果有权限,则可以从/root/目录的block中读取到test-hard文件的文件名及对应的inode号。 5)通过test-hard文件的inode号,就可以找到test-hard文件的inode信息,接着判断用户是否有权限访问test-hard文件的block。 6)如果有权限,则可以读取block中的数据,这样就完成了/root/test-hard文件的读取与访问。
1)不论是修改源文件(test文件),还是修改硬链接文件(test-hard文件),另一个文件中的数据都会发生改变。 2)不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件都可以被访问。 3)硬链接不会建立新的inode信息,也不会更改inode的总数。 4)硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode号是重新计算的。 5)硬链接不能链接目录,因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的Linux来讲过于复杂。 6)硬链接不会占用inode和block。
含义
软链接有着自己的inode号以及用户数据块。只不过用户数据块中存放的内容是另一文件的路径名的指向。
查找文件的步骤
当我们查找一个软链接文件,比如/root/test-soft时,要经过以下步骤:
1)首先找到根目录的inode索引信息,然后判断用户是否有权限访问根目录的block。 2)如果有权限访问根目录的block,就会在block中查找到/root/目录的inode号。 3)接着访问/root/目录的inode信息,判断用户是否有权限访问/root/目录的block。 4)如果有权限,就会在block中读取到软链接文件test-soft的inode号。因为软链接文件会真正建立自己的inode索引和block,所以软链接文件和源文件的inode号是不一样的。 5)通过软链接文件的inode号,找到了test-soft文件inode信息,判断用户是否有权限访问block。 6)如果有权限,就会发现test-soft文件的block中没有实际数据,仅有源文件test的inode号。 7)接着通过源文件的inode号,访问到源文件test的inode信息,判断用户是否有权限访问block。 8)如果有权限,就会在test文件的block中读取到真正的数据,从而完成数据访问。
1)不论是修改源文件(test),还是修改硬链接文件(test-soft),另一个文件中的数据都会发生改变。 2)删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在。 3)软链接会新建自己的inode信息和block,只是在block中不存储实际文件数据,而存储的是源文件的文件名及inode号。 4)软链接可以链接目录。 5)软链接可以跨分区。 6)软链接会占用inode和block。
Linux 软链接和硬链接简介的更多相关文章
- Linux软链接和硬链接
Linux中的链接有两种方式,软链接和硬链接.本文试图清晰彻底的解释Linux中软链接和硬链接文件的区别. 1.Linux链接文件 1)软链接文件 软链接又叫符号链接,这个文件包含了另一个文件的路径 ...
- Linux 软链接和硬链接的理解与学习
理解前提: 首先要知道 Linux任意一个文件包含2个信息:第一个信息就是文件本身存的内容,第二个信息是文件的控制信息(读写,路径,大小等等),这2个信息是分开存储的,明白这点非常重要 理解总结: L ...
- LINUX “软链接”和“硬链接”的区别
今天在知乎上看到一篇十分有趣的问题: 如何评价微软高级工程师痴迷于soft link这一linux常见概念? 虽然又是知名撕逼王曾某的撕逼帖,但是我还是想就题目中链接的问题简单地讲讲. 什么是链接? ...
- Linux 软链接和硬链接
系统链接文件 文件有文件名和数据,在Linux上被分成两个部分:用户数据(user data)与元数据(metadata) 用户数据:文件数据块(data block),数据块是记录文件真实内容的地方 ...
- Linux软链接与硬链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...
- linux软链接和硬链接的区别
硬链接:ln 3.txt 4 相当于把源文件复制了一份 软连接:ln -s 3.txt 5 相当于快捷方式 改动源文件4.5同时更新,删除3.txt ,5不存在,4存在的.
- linux软链接与硬链接详解
软连接 命令: ln -s 原文件 目标文件 特征: 1.相当于windows的快捷方式 2.只是一个符号连接,所以软连接文件大小都很小 3.当运行软连接的时候,会根据连接指向找到真正的文件,然后执行 ...
- linux 软链接和硬链接的区别 和 inode 的理解
软连接和硬连接的区别:1.创建的方式不同软:ln -s 源文件 连接名硬:ln 源文件 连接名 2.原理不同,和删除源文件对其的影响.硬连接的inode节点和源文件的inode节点一样.也就是同一个i ...
- linux命令大全之ln命令详解(创建软链接和硬链接)
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接,分为软链接.硬链接.软链接相当于windows的快捷方式,下面是使用方法和示例 ln是linux中又一 ...
随机推荐
- SEAndroid
SEAndroid安全机制所要保护的对象是系统中的资源,这些资源分布在各个子系统中,例如我们经常接触的文件就是分布文件子系统中的. 实际上,系统中需要保护的资源非常多,除了前面说的文件之外,还有进程. ...
- js去除html标签样式
params = params.replace(/<\/?.+?>/g,"").replace(/ /g,"");
- Android Sensor详解(1)简介与架构【转】
本文转载自:https://blog.csdn.net/u013983194/article/details/53244686 最近在学习有关如何porting sensor的东西,仅借此机会写博客来 ...
- Python示例项目学习
原文地址:http://www.360doc.com/showweb/0/0/874025604.aspx 「 Python3 实现火车票查询工具 」 相信很多人学Python都是冲着它强大的爬虫 ...
- Android 自己实现更新下载自动安装
1.一些公司开发完一款App之后可能并不会去上架App商店,但事后期也需要定时进行维护更新,所以会选择把打包好的apk 发布到自己的服务器,然后在数据库建一个版本号的表,然后剩下的就交给你androi ...
- 支付宝小程序开发——获取位置API没有城市区号的最佳处理方案
前言: 需要对城市区号进行判断,但是支付宝小程序提供的my.getLocation() API返回的数据中只有6位的城市行政代码,诸如:深圳(440300),并没有区号(0755),那么怎么办呢? 需 ...
- Thinkphp5 实现动态模板主题多个模板切换
在项目开发过程中会遇到一个网站有不同风格,本文详细介绍Thinkphp5 实现模板主题多个模板切换 一.在Config中配置view_path模板路径代码如下 1 2 3 4 5 6 7 8 9 10 ...
- Ubuntu16.04安装Superset
Superset 是Airbnb 开源的大数据可视化平台 其支持的datasource https://superset.incubator.apache.org/index.html?highlig ...
- 【设计】Facebook的语调设计-做的珍惜
http://www.woshipm.com/pd/3206743.html 做的是真细呦
- Appium基础之屏幕截图
应用背景 在实际自动化项目运行过程中,很多时候App可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏.从而达到一种“有图有真相”的效果. 截图方法 方法1 s ...