Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
时间:2022-04-24
本文章向大家介绍Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用,主要内容包括1、下载extundelete包,安装依赖、2、编译安装extundelete、3、卸载需要恢复文件的分区、4、使用extundelete查看分区上存在的文件、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1、下载extundelete包,安装依赖
我用的是Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel。
yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel
然后下载extundelete程序
下载地址: http://extundelete.sourceforge.net/
2、编译安装extundelete
编译步骤:
tar xjf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure
make && make install
extundelete的用法,可以通过help查看详细!
extundelete软件恢复原理
extundelete恢复数据的过程:在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区指针清零,实际文件还储存在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天。所以!以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据成功的比例。
3、卸载需要恢复文件的分区
fuser -k /mnt/test/
umount /mnt/test
4、使用extundelete查看分区上存在的文件
并通过执行extundelete命令查询/dev/sdb1分区可恢复的数据信息
extundelete --inode 2 /dev/sdb1
恢复文件例子
例如获得被删文件inode为13 恢复:
extundelete --restore-inode 13 /dev/sdb1
mount /dev/sdb1 /mnt/test/
mv RECOVERED_FILES/file.13 /mnt/test/resolv.conf 恢复完成,可用cat验证内容。
恢复单个文件:extundelete /dev/sdb1 --restore-file passwd 会在当前目录下生成一个RECOVERED_FILES目录,里面保存已经恢复的文件。
恢复单个目录:extundelete /dev/sdb1 --restore-directory /mongodb
恢复所有误删文件:extundelete /dev/sdb1 --restore-allextundelete
还可以实现恢复某个时间段的数据。可以通过“--after”和“--before”参数实现!
- Linq 实现 DataTable 行转列
- sql常用的系统存储过程
- 用DPDK rte_ring实现多进程间通信
- sqlserver 的事务和c#的事务
- Flink DataStream编程指南
- oracle建表、建主键、外键基本语法
- F-Stack KNI配置注意事项
- F-Stack 助力 HTTP 网络服务器性能提升
- How to build Multi-Language Web Sites with ASP.NET 2.0 and VS.Net 2005
- 动态生成TreeView方法(二)
- Gradle打jar包如何上传到maven本地库
- POJO应用框架:Spring与EJB3.0的比较
- spring Boot 整合mybatis 如何使用多数据源
- 动态生成TreeView方法(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spark——底层操作RDD,基于内存处理数据的计算引擎
- Go 项目最佳实践
- 虚拟机更换JDK版本步骤(Hadoop集群)
- JavaSE重点复习
- [数据结构与算法] 树结构之二叉排序树、平衡二叉树、多路查找树
- 工作后, 你一定不能错过技术之JDK1.8的新特性
- 【Go】剑指offer:二叉树子树的判断
- css中的box-shadow属性详解
- 基于docker快速搭建多节点Hadoop集群
- CSS简笔画:纯CSS绘制一辆婴儿车
- 分布式自增数据库ID
- 【STM32F429开发板用户手册】第27章 STM32F429的定时器应用之TIM1-TIM14的PWM实现
- 数据库基础开源学习教程-android 使用 litepal 操作本地数据库
- 红黑树——动态+静态图
- 一文读懂Python实现张量运算