admin管理员组文章数量:1122852
创建文件,删除文件(如何恢复),查看文件(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 -> 数据块 -> 载入内存 -> 显示器
本文标签: 创建文件删除文件(如何恢复)查看文件(lsechocat)的原理和过程
版权声明:本文标题:创建文件,删除文件(如何恢复),查看文件(ls,echo,cat)的原理和过程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1700338916a308149.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论