文件删除原理

简介:

wKiom1lwbJPw8Hi7AAFLxTg60Ss838.jpg

Linux文件删除原理:

   Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2link计数器:i_count  i_nlink


   i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count内存引用计数器i_nlink磁盘的引用计数器


 当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增加。


  对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。这又是为什么呢?


这是因为rm操作只是将文件的i_nlink减少了,如果没其它的链接i_nlink就为0了;但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有i_nlinki_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。


以上讲的i_nlinki_count是文件删除的真实条件,但是当文件没有被调用时,执行了rm操作删除文件后是否还可以找回被删的文件呢?


前面说了,rm操作只是将文件的i_nlink减少了,或者说置0了,实际就是将文件名到inode的链接删除了,此时,并没有删除文件的实体即(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果此时继续写入数据,那么当新数据就可能会被分配到被删除的数据的block数据块,此时,文件就会被真正的回收了,那时就是神仙也没有办法了。


本文转自写个博客骗钱博客51CTO博客,原文链接http://blog.51cto.com/dadonggg/1949400如需转载请自行联系原作者


菜鸟东哥

相关文章
|
3月前
|
运维
简记:清理指定后缀名文件的 powerhsell 小脚本
简记:清理指定后缀名文件的 powerhsell 小脚本
18 0
|
4月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
|
4月前
|
Linux Shell C语言
Linux编程之删除文件时排除某个文件
Linux编程之删除文件时排除某个文件
45 0
|
8月前
用ffmpeg操作文件删除与重命名
用ffmpeg操作文件删除与重命名
81 0
用ffmpeg操作文件删除与重命名
经验分享:u盘文件或者目录损坏无法读取、无法正常打开,如何解决?
u盘突然无法正常打开,显示目录损坏。。。 找寻了网上众多方法。以下是解决方案 win+R 打开后输入cmd之后输入:chkdsk +你要修复的u盘+/F
经验分享:u盘文件或者目录损坏无法读取、无法正常打开,如何解决?
linux文件误删文件,恢复操作案例
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的。
linux文件误删文件,恢复操作案例
|
分布式计算 Java Hadoop
HDFSAPI编程源码-文件删除
HDFSAPI编程源码-文件删除
|
安全 Linux
发现一个病毒文件你删了他又自动创建怎么解决
发现一个病毒文件你删了他又自动创建怎么解决
423 0
|
Java PHP Spring
一次惊心动魄的文件删除
今日在博客园看到了关于“印象最深的一个bug”的活动。回想起了从业早期的一个记忆犹新的BUG处理经历。
285 0
|
缓存 Windows
文件夹显示文件或目录损坏且没法读取
 用户反馈说Win7打开Local Settings文件夹提示“位置不可用,拒绝访问"怎么办?Local Settings是Windows系统中的一个隐藏文件,一般存放着和上网有关的历史记录和缓存之类的文件,如果打开Local Settings文件时提示"位置不可用,拒绝访问"下面跟随小编脚步一起看看具体解决方法。
565 0