前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础(目录是什么鬼)

Linux基础(目录是什么鬼)

作者头像
用户2617681
发布2019-08-08 10:39:11
4.5K0
发布2019-08-08 10:39:11
举报
文章被收录于专栏:秘籍酷秘籍酷秘籍酷

在linux下,一个目录下放了很多文件,还有其他的子目录,但是目录的大小却总是只有4096字节。这是怎么回事呢?来听听北理工林思佳同学的分享。

先来看看这个目录: /usr

上图中的 include/ 目录下有上千个文件,但 include 的大小却只有 4096个字节,很明显这个大小并非目录下文件大小之和。

所以,linux的目录并没有存放文件本身。这是linux跟windows不同之处。

Linux的目录只是代表一个路径,存放的只是目录项。目录项由文件名和i-node number组成。4096即4KB,操作系统读取硬盘的时候,是按“块”读取,是文件存取的最小单位。“块”的大小,最常见的是4KB,即一个block。而文件名显然只是一个字符串,而i-node 一般大小是128字节或256字节,所以4KB足矣。

但是目录里面只有这两种东西那是怎么读取到文件的呢?

关键就在i-node number 节点编号,它inode索引结点的成员之一。可以使用 stat 命令来查看文件/目录的元信息:

inode包含文件的元信息,具体来说有以下内容:

* 文件的字节数 * 文件拥有者的User ID * 文件的Group ID * 文件的读、写、执行权限 * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。 * 链接数,即有多少文件名指向这个inode * 文件数据block的位置

当我们访问一个文件的时候,直观的就是找它的文件名,而文件名与i-node number联系,从而找到索引节点 inode,其中block的位置是由存储在inode的一些指针来索引的。由此可以推出,inode和文件数据并不是在同一片地方的,这和linux的文件系统有关系。linux是先有路径,再有分区的,这个路径就像是一棵倒挂的树,由 / 根目录开始。

所以典型的linux分区如下:

也就可以推出在同一个分区内使用mv命令移动文件的时候,不管文件有多大,基本都是瞬间完成,因为只是目录项的改变而已,对于文件数据的位置并没有变化。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秘籍酷 微信公众号,前往查看

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

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

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