前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >硬连接与软连接,inode与links当访问一个文件的时候,发生了什么INODE的内容建一个硬连接发生了什么?访问硬连接的过程注意建一个软连接发生了什么?访问一个软连接注意

硬连接与软连接,inode与links当访问一个文件的时候,发生了什么INODE的内容建一个硬连接发生了什么?访问硬连接的过程注意建一个软连接发生了什么?访问一个软连接注意

作者头像
用户1174983
发布2018-02-06 16:39:26
1K0
发布2018-02-06 16:39:26
举报
文章被收录于专栏:钟绍威的专栏

硬连接和软连接,第一感觉就像是window的快捷方式,实则不然

要说硬连接和软连接,那就必须了解inode和block以及分区了

EXT文件系统在创建分区的时候,就划分了两块区域,inode table和date block

INODE

inode – index node ,索引节点

每一个inode固定分配了128bytes的空间

一个文件和目录对应着一个inode

多个文件可以对应一个inode

当访问一个文件的时候,发生了什么

首先会找到这个文件名对应的inode number,然后拿着inode number 找到inode,获取inode中的信息,inode中记录了文件的数据在哪些个block中储存,然后会根据着inode中的block顺序,依次取出数据

INODE的内容

用sata命令取出文件名对应的inode信息

size :该文件的大小

block : block的信息

links :有多少个连接数,有多少个文件名连接上这个inode

inode: inode number

Access:mode 权限

uid、gid

atime、mtime、ctime

删除

删除一个文件的时候发生了什么?

当这个文件的links>1的时候,先links-1,不删除block中的数据,不删除inode

如果links=1,那就删除inode,而且删除block,这样的话,那文件真的是删除了

删除目录的软连接,对实际目录没有影响,删除实际目录那就是真的删除了

硬连接

ln source destination

用上面的指令可以新建一个硬连接

建一个硬连接发生了什么?

先新建一个文件名,文件名的inode number 指向源文件的inode number,然后把links+1,这就完成啦

所以硬连接文件的所有信息(权限、owner、size、time….)都和源文件一模一样

访问硬连接的过程

找出硬连接的inode number,然后读取这个inode的信息和bolck位置,接着读取block中的数据

注意

源文件和硬连接文件共用一个inode

建立硬连接,inode中的links会加一

所以删除硬连接对源文件不会有影响

软连接

ln -s source destination

用上面的指令可以建立一个软连接

建一个软连接发生了什么?

先建立一个文件,这个过程就会新建一个inode,软连接的inode和源文件的inode不一样

然后这个软连接文件的文件名会指向源文件

可以看到,软连接的inode和源文件的inode不一样

软连接文件的大小为4bytes,这刚好就是源文件文件名(demo)的大小,一个字幕一个byte

访问一个软连接

访问一个软连接文件的时候,会根据文件名找到源文件,然后就跟直接访问源文件一样了

注意

软连接的inode和源文件的inode不一样

软连接不会增加links,所以删除源文件(links=2)的时候,软连接就访问不了了

软连接文件的size=源文件的文件名的size

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档