创建文件,删除文件(如何恢复),查看文件(ls,echo,cat)的原理和过程

目录

创建文件的过程

删除文件的过程

如果想要恢复删除的文件? 

注意点

查看文件的过程

ls

echo重定向写入

cat


创建文件的过程

  • 首先,创建文件的时候,输入的命令中会有路径+文件名的传入 
  • 在某一分区的某一块组中(由os分配),在其inode位图遍历,找到第一个为0的位,将它置为1,然后拿到该位对应的inode号
  • 拿到后,就可以去inode表中相应位置,写入这个新文件的属性啥的了
  • 由于新文件还没有内容,就先将inode结构中的blocks(对应数据块的数组)设为空,等写入的时候,再将它和数据块进行对应
  • 创建好文件后,需要将文件名+inode写入目录文件的data block
  • 但是我们实际上只知道目录的文件名,所以,需要用文件名打开目录的父目录,读取inode
  • (就这样无限套娃下去,但这些操作其实os已经为我们实现了,linux会构建常用的目录结构,这个结构就帮我们建立了文件名和他目录中的inode的关系)

 

删除文件的过程

  • 删除文件,它肯定会提供路径+文件名
  • 通过文件名,我们可以在目录文件中找到对应的inode编号
  • 通过这个编号,就可以找到对应的inode结构
  • 在对应的块组内,在inode位图中,找到对应的位,然后置为0
  • 块位图中,将它对应的数据块也由1置为0
  • 最后将目录文件中它的inode和文件名的映射关系删掉,文件就删完啦

如果想要恢复删除的文件? 

是可以的

  • 只要我们知道删除文件的inode
  • 然后使用恢复工具,在对应的块组中,恢复inode位图
  • 通过位图和inode,就可以拿到inode结构
  • 拿到inode,就可以拿到文件属性+块位图的编号 -> 恢复块位图
  • 就可以拿到文件的数据
  • 这样文件就被恢复了

注意点

  • 要确保该inode和对应的数据块没有被二次使用
  • 因为你一旦删除了文件,它的inode和数据块就被置为0,就可能会被其他文件所使用
  • 一旦被使用,就不可能恢复了
  • 除此之外,还要保证曾经目录文件中保存的文件名还在
  • 否则即使通过inode恢复了文件,文件名也没有了

 

查看文件的过程

ls

  • 路径(ls进程会在cwd文件中记录自己的工作目录)
  • 目录inode(由os构建的目录结构可以找到)
  • 目录inode用于找到其数据块
  • -> 该路径下所有文件的inode
  • 文件名(在目录下的数据块存储)
  • 通过文件名和inode的关联,拿到inode号
  • -> 属性 

echo重定向写入

首先让该进程将文件打开,形成file对象,向file对象写入内容 -> os定期向文件刷新(从缓冲区到磁盘)

和上面的方法一样:

  • 有文件名+目录inode+路径 -> 文件inode -> 数据块 -> 将数据刷入数据块中

cat

还是那样:

  • 目录inode+路径+文件名 ->文件inode -> 数据块 -> 载入内存 -> 显示器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值