linux复习2(Ubuntu发行版)文件命名 目录文件.和.. 索引式文件系统 目录树 linux系统怎么找到某个文件 挂载分区后目录下文件消失了

索引结点

1.文件系统概念:

①文件与目录的定义
文件系统 、文件、目录 、子目录、文件名、路径名、当前工作目录
②文件结构
文件的成分——索引节点 + 数据节点

③文件命名:

​ ▲尽量简捷有效

​ ▲不要用斜线(/)和空字符(ASCII字符\0)

​ ▲避免空格、制表符或其他控制字符。

​ ▲习惯上允许使用下线符(_)和句点(.)来区别文件的类型 ,但是应避免使用以下有特殊含义的字符:
​ ; | < > ˋ ″ ′ $ ! % & * ? \ ( ) [ ]
​ ▲同类文件应使用同样的后缀或扩展名
​ ▲Linux系统区分文件名的大小写,如letter和Letter不是一个文件
​ ▲以圆点(.)开头的文件名是隐含文件

③目录文件:
在这里插入图片描述

​ 43516731 . ⽂件.的innode number是43516731

​ (innode number在2.Linux的文件系统特性有解释)

​ 43384921 … ⽂件…的innode number是43384921

​ 43516732 passwd.png ⽂件passwd.png的innode number是43516732

​ 每个目录的第一项都表示目录本身,并以 “ . ” 作为该目录本身的文件名,通过cd . ,可以到达本目录,而第二项的名字都是 “ … ” ,表示该目录的父目录。

​ 假如当前目录为/home/zxy/Documents,执行 cd … ,就会进入/home/zxy目录。

2.Linux的文件系统特性:

​ linux操作系统的文件数据除了文件实际内容外, 通常含有非常多的属性,例如 Linux 操作系统的文件权限(rwx)文件属性(拥有者、群组、时间参数等

​ 文件系统通常会将这两部份的数据(实际内容和其他属性)分别存放在不同的区块,权限与属性放置到inode 中,至于实际数据则放置到 **data block (data node)**区块中。 若文件太大可能会占用多个数据块。

​ 每个文件都会占用一个 inode ,inode 内则有文件数据放置的 block 号码。 因此如果能够找到文件的 inode 的话,那么就会知道这个文件的 block 号码, 也就能够读出该文件的实际数据了。

3.索引式文件系统(indexed allocation)

​ 1.每一个文件都会和唯一的一个innode(索引节点)相对应。innode会对应一到多个data block(数据节点),存储的是多个data block的指针,通过指针并行的获取几个data block内的内容。data block存放的内容就是文件内的真实数据了。

在这里插入图片描述

​ 2.FAT文件系统数据是链式的获取多个data block的内容

在这里插入图片描述

目录树

​ 目录成分:索引节点和至少一块数据块。

​ inode 记录该目录的相关权限与属性,并可记录分配给目录的那块 block 号码; 而 block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据。下图是block内容。

在这里插入图片描述

问题:

一、怎么找到m1.c这个文件?

在这里插入图片描述

1.根目录的innode number是2(规定),获取根目录的data block(也就是文件名和结点号表格),从表格中获取/usr目录的innode number,获取/usr innode数据。

2.通过/usr的innode,获取/usr的data block(也就是文件名和结点号表格),从表格中获取/mengqc目录的innode number,获取/mengqc innode数据。

3.通过/mengqc 的innode,获取/mengqc 的data block(也就是文件名和结点号表格),从表格中获取/mub1目录的innode number,获取/mub1 innode数据。

4.通过/mub1的innode,获取/mub1 的data block(也就是文件名和结点号表格),获取m1.c的innode number,获取m1.c的innode。

5.通过m1.c的innode,获取其指向数据的data block指针,获取m1.c内的数据,即文件内容。

二、为什么把某个新分区挂载到某个目录后,该目录原本的文件会消失?

该问题预设场景:/home/zxy/Documents原挂载分区为/dev/sda6,后挂载新分区/dev/sdb2,原文件消失。

/home/zxy/Documents 挂载新分区前:
在这里插入图片描述

/home/zxy/Documents 挂载新分区后:

在这里插入图片描述

在这里插入图片描述

形象化解释:

​ 原本before文件存放在名字叫/dev/sda6的盒子里,后来这个盒子从目录树上取下来了(解挂载),随之被一个空盒子/dev/sdb2替代了,那么现在再次进入/zxy/Documents后,就是相当于进入/dev/sdb2这个空盒子了,因此原本的before看起来消失了。

​ 但其实before还存在,只是因为/dev/sda6这个盒子没挂到树上,所以无法访问,重新挂载这个盒子即可看到盒子里的内容,如before等。

解决办法:
正常登录以后,所看到的各个目录,文件都是内核在加载时候构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(比如/home),系统就把VFS中的这个挂载点/home指向你最后所挂载的那个设备上。那么你现在访问该挂载点时,就会看到你最后挂载在此处的设备。而之前所挂载的设备依然在那里,只不过挂载点/home已经不再指向之前的设备。所以之前的数据是被隐藏了,但并没有删除,若umount挂载后,数据又重新回来了。
(1)先将硬盘挂载到一个新建的空目录作为中转目录。
(2)将硬盘先挂载到跳板目录上。
(3)将原要挂载的目录中所有文件复制过来。
(4)删除原目录下的所有文件。
(5)将硬盘挂载到原要挂载的目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值