文件,文件夹和inode表的关系

文件数据包括两部分内容;元数据和数据两部分,存放分别在元数据空间 和数据空间,

10年积累的成都做网站、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有文水免费网站建设让你可以放心的选择与我们合作。

0 每个新文件都会系统分配一个iNode节点编号 相当于人的×××号 在一个分区内具有唯一性,如果inode 编号不一样 所占的空间的指针指向的数据也不一样
比如 在 /home 建立大小 一个G的文件 f1 把 f1文件复制 当前文件夹 f2
实验结果发现 这两个文件一共占用了 2G的空间大小 意味着 f1的指针和f2的所指的指针指向的数据空间不是一个 如果是两个文件的指针指向同一个数据空间 那么 两个数据的数据所占空间大小为1G ,但是实验结果相反占用了 2G的空间.
1 mode 权限
2ownership 所属 用户 所属组
3时间戳 信息(读时间atime ,修改时间mtime,属性修改时jian间ctime)
4直接指针12个,一个指针是 4K的数据,由于直接指针因为能指定的数据较小
所以引入间接指针的概念间接指针包含了 一级指针 二级指针 三级指针 ..
把4个字节为一个单位那么这个文件的数据空间的一个最小的块单位4k的数据空间可以分成1024份,一级指针的数据空间大小位10244k=4m,以及类推 二级指针可以制定的数据空间大小位4m1024=4G,三级指针指定数据空间大小 4T
5size 文件数据所占空间大小
6链接数 有几个文件指向这个inode的数据空间
实际上 文件夹也是一种特殊的文件 ,文件元数据部分和普通文件没差异
在数据空间存放的内容是一条一条的 文件名>>>inode节点编码 有很多条这样的数据组成,我们删除文件其实是把所在文件夹这个特殊的文件内容删除某条记录而已
删除,这个时候由于文件名和linode就在文件夹内容空间不存在 ,qu系统认为 没有名只有 inode数据是可用空间,但是这个时候数据还是实际存在的
如果是硬链接,就是在同一个分区内 一个文件指向另一个文件共用数据空间
在所在的文件夹内容列表有 两条数据 sqiud 1001
squid-link 1001
就算删除其中任意一条 数据 另外一个文件都可以访问,因为另外一个文件名指向了inode节点 到元数据列表中找所在的节点inode数据就可以
硬链接智能是 文件 对文件 不支持 文件夹 当一个inode的link数为0 则 这个文件被删除了
一个文件做了1硬链接 那么链接数为2
目录的链接数最少为2
软链接是一个文件指向另外一个文件只不过是 垮分区的由于 不同分区的inode 编号不通用 就相当于 两个 文件的内容存放的是相对路径
软链接是通过相对路径的办法 找到不同分区的数据的
如果删除原始文件 ,那么原始文件 软链接就找不到 资源文件了 因为软链接数据空间是记录的相对路径并没有写指向的 inode编号 ,所以 不会增加源文件的链接数(links)
相反 硬链接 不同名字指向同一个 inode 在同一个分区中,链接数为2

创建文件
touch
-a 修改文件的读时间[root@localhost /home/wang]#stat f1
File: ‘f1’
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 806h/2054d Inode: 114 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-12-16 13:25:30.766286983 +0800
Modify: 2018-12-16 13:25:30.766286983 +0800
Change: 2018-12-16 13:25:31.118287001 +0800

没修改之前的
现在把读时间修改成2025-12-11 08:30:30

touch -a -t 201812110830.30 f1
查看文件时间
stat f1
File: ‘f1’
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 806h/2054d Inode: 114 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-12-11 08:30:30.000000000 +0800
Modify: 2018-12-16 13:25:30.766286983 +0800
Change: 2018-16 13:29:58.326300564 +0800
Birth: -
读时间 已经修改成 需要的时间
-m 制定文件更改数据内容时间
-t 格式为 [[CC]YY]MMDDhhmm[.ss]
如果要cc 那么 yy必须 写出来

cp 源 目标
cp 源... 目录
1当源是文件 目标不存在 创建设定的名字 内容放在该文件里
2当源是文件 目标存在为f1 文件 内容覆盖 名字不变
3当源是文件f1是 目标是dir 目录在dir 目录文件下创建f1 同名文件
4当源是多个文件 目标是不存在 不能完成创建
5当源是多个文件 目标是一个文件 也不能完成复制功能
6当源是多文件 目标是目录 把文件放在目标目录下面文件目录把源放在该目录下
7当源是多个目录 目标不存在 创建不存在的
8当源是目录 目标是文件 不能执行复制
9当源是多个目录 目标是一个目录 把源目录目标目录放到下边

  1. 10当源是多个目录 目标不存在 创建目标目录把多个目录拷贝到这个目录下面
    11当源是一个目录 目标不存在 就相当于 复制里面的内容把目录的名字修改了

    cp
    -t 把源 和目标对调位置
    -v 看到 复制的过程
    --preserv
    ownership 所有者信息
    mode 复制权限信息
    context 复制内容信息
    timestamp 复制文件的时间信息 读时间 修改时间 状态更改时间
    all 复制所有
    -R 递归复制 深入文件夹里面

-d 复制链接名


‘’ 单引号 不认识变量也不认识命令
“” 双引号 认识 变量 不认识命令
` 反单引号 认识命令和变量
设置 一个 rm的 别名
首先 把在/date 目录下面见一个随机的时间文件夹
mkdir -p /date/
date +%s这里用反单引号
mv -t /date/
date +%s移动文件到随机生成的目录 这个命令还没制定 删除哪个文件 因为后面的文件由 rm 后面添加
alias rm="mkdir -p /date/
date +%s;mv -t /date/date +%s`"
快捷键就生成了
如果想去掉这个快捷键 unalias rm
这个快捷键长期生效 放在~/bashr 里面追加sourcce ~.bashr生效 就可以调用


名称栏目:文件,文件夹和inode表的关系
文章转载:http://azwzsj.com/article/ighpgs.html