linux恢复rm命令,linux下rm删除与恢复
最近一个新客户由于长期没做备份,再加上客户与之前的技术合作伙伴之间的一些不愉快。导致客户的整体linux系统被全部用rm删除。我们对这种技术人员的职业素养、道德品质和法律素养表示唏嘘,客户已经在第一时间进行了报案和立案工作,犯罪嫌疑人迟早会被绳之以法的。在唏嘘感叹的同时间,我们建议所有的企业第一时间要做好数据定时异地备份,下面介绍linux下的ext4文件系统删除原理。
警告:若数据块被覆盖,则无法恢复,第一时间问清楚是什么时候删除的数据,叮嘱不要继续再动了!
一、文件删除原理
在ext3/4文件系统中,inode索引节点除了存放文件属性还指向文件的block节点,是书的目录,block存放文件的实际数据,是书的每一页,文件的上级目录的block存放的是文件名及其inode节点编号,删除文件实际上是删除文件名和inode节点编号的关联以及inode节点内的指针信息,那么实际上,文件的block还在,加上ext3/4文件系统是日志文件系统,格式化时会分配一个固定大小的空间的日志文件journal,它记录创建和删除文件的记录,当删除一个文件,操作系统首先把文件inode信息和文件名称写入到journal,然后删除文件并清空inode原始数据指针。
二、有两种情况无法恢复
1)当新的数据写入到被删除文件占用的block后,原来的inode号就指向新的数据,那么这样是无法找回的。
2)当journal日志文件存满之后,会释放前面的空间,循环使用,存放最新的记录,如果删除文件的记录被覆盖,是恢复不了的。
三、恢复文件的原理
根据journal日志文件残留inode的信息,定位到相关目录,恢复残留inode对应的block。但日志文件恢复只适合小数据量的恢复,因为journal的空间有限,存放不了太多记录。对于大文件如oracle等数据库文件恢复采用逆向推算和数据文件本身特点来提取。
简单说,ext4中文件和目录包含元数据和实际数据两个部分,实际数据存储了文件的实际内容,元数据存储了文件的创建修改删除时间以及实际数据的地址。文件和目录的元数据由一个inode结构表示。所有的inode存储在inode数组中,根据序号访问。
Linux下文件删除的原理
Linux下控制文件真正被删除的计数器
Linux是link的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_count和i_link
i_count的意义是当前文件使用者(或被调用)的数量
当一个文件被某一个进程引用时,对应的这个值就会增加
i_nlink的意义是介质连接的数量(硬链接的数量)
当创建文件的硬链接的时候,这个值就会增加
可以理解为i_count是内存引用计数器,i_nlink是硬盘的引用计数器
rm命令原理
对于删除命令rm而言,实际上就是减少磁盘引用计数i_nlink。
Q:如果一个文件正在被某个进程调用,而用户却执行rm把文件删除了,那么会出现什么结果?当用户执行rm删除文件后,再执行ls或其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容,这又是为什么呢?
A:rm操作只是将文件的i_nlink减少了,如果没有其它的链接i_nlink就为0了。但是由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以执行rm操作,系统并没有真正的删除这个文件,只有当i_nlink和i_count都为0的时候,这个文件才会被真正的删除。也就是说,必须要解除该进程对该文件的调用,才能真正的删除。
Q:当文件没有被调用,执行了rm操作之后,还能找回被删除的文件吗?
A:rm操作只是将文件的i_nlink减少了,或者说置为0,实际上就是将inode的链接删除了,此时,并没有删除文件的实体(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果继续写入数据,那么新数据可能会被分配到被删除的数据的block数据块,文件就被真正的回收了。
linux恢复rm命令,linux下rm删除与恢复相关推荐
- linux新建自定义命令,Linux 创建自定义命令
Linux 创建自定义命令 Linux 可以创建自定义使用命令 这里我们采取使用"alias"命令.这里我们首先了解两个文件,通过这两个文件我们可以根据环境配置相应的自定义命令. ...
- 命令行下从bak文件恢复sqlserver数据库方法
命令行下从bak文件恢复sqlserver数据库方法 注:本文所示访问从SqlServer 2000 - 2014版都是通用的 参考:http://blog.sina.com.cn/s/blog_5c ...
- linux shell 未找到命令,未找到linux问题setenv命令(linux issue setenv command not found)
未找到linux问题setenv命令(linux issue setenv command not found) 我在Linux中开发了一个Tcl / Tk脚本工具. 为了运行该工具,每次需要在she ...
- linux恢复rm命令,Linux系统下不小心使用rm命令删除的文件能有办法恢復吗?
linux的文件被rm删除是可以通过linux自带的文件恢复工具debugfs来进行恢复,但是只能恢复ext2文件系统的文件,不能恢复ext3文件系统的文件. 1,首先查看需要恢复的文件所在的文件系统 ...
- linux mv复制命令,linux中删除复制移动文件rm,mv,cp命令详解linux操作系统 -电脑资料...
在linux中对文件的复制删除移动分别会使用到rm,mv,cp三个命令,下面我来给大家介绍一下rm,mv,cp命令对文件的常规操作吧, 先看实例 删除复制移动文件命令 Linux代码 rm -rf / ...
- linux删除del后缀文件,linux删除命令_linux下如何删除一个文件?
关于linux的删除命令 先登录linux服务器. linux下的删除命令是 del吗 不是del.是rm:remove 移除的意思.rm的用法如下: 1.删除文件夹以及文件夹中的所有文件命令: rm ...
- linux 阻止 复位命令,linux防误删操作(使用safe-rm;使用mv命令删除文件)
本文于2021年1月16日由AlvinCR更新 1.基于文本的Linux为什么没有回收站? 个人观点: 1.linux是指令行操作系统,不同于win的图形化界面,linux无法方便的快速恢复文件,例如 ...
- linux 移动压缩包 命令,Linux命令,复制,移动,删除,创建,解压缩,修改权限
cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或目录目标文件或目录 说明:该命令把指定的源文件复制到 ...
- linux清屏命令_linux下的7个常用命令的基本使用
02.Linux下的7个常用命令的基本使用 小技巧: 使用[ctrl + shift + = ]可以放大终端窗口的字体显示使用[ctrl + -]可以缩小终端窗口的字体显示 ls:查看当前目录下的文件 ...
最新文章
- 强大:MyBatis 流式查询
- NLP情感分析 动手学深度学习博客
- Ubuntu 11.10中用xen-tools安装虚拟机(UbuntuCentOS)
- HDOJ1860 ( 统计字符 ) 【水题】
- 前端学习(2445):分页的实现
- java 双等号(==) 与equals方法的使用区别
- 让我们来比较C#,C++和Java之间重写虚函数的区别
- CTA策略06_BollChannelStrategy
- docker登录密码错误_Docker安装运行Mysql 5.7.31容器并修改数据库密码
- Nginx 学习--初级篇,Nginx 认识以及作用
- 淘宝手淘搜索怎么做?大神导航,一个神奇的网站,从此开启大神之路!
- springboot整合aceadmin
- Cohen's d 效应量计算
- AAAI 2020对抗样本论文
- 如何对计算机进行磁盘整理,碎片整理,详细教您怎样进行磁盘碎片整理
- android流光字体实现,【流光算法代码实现】Demo
- 电脑系统服务器丢失怎么办,电脑本地连接不见了,小编教你怎么解决
- 三菱FX5U系列PLC给程序设置密码的具体方法和步骤
- 实体中list属性为空或者null,设置为空数组
- 召回率与精确率的理解