当前位置: 首页 > news >正文

rm误删文件恢复

rm误删文件恢复

  • 问题描述
  • 安装extundelete
    • yum安装extundelete
    • 编译安装extundelete
  • 常用参数
    • 动作(action):
  • 尝试数据恢复前置条件
    • 卸载磁盘分区
    • 查看被删除数据信息
  • 恢复文件
    • 恢复指定inode号文件
    • 恢复指定文件名
    • 恢复指定目录
    • 恢复所有可恢复文件
    • 恢复指定时间的文件
      • 恢复指定时间戳之前删除的文件
      • 恢复指定时间戳之后删除的文件
    • 查看恢复出的文件

问题描述

在Linux实例中,使用rm命令误删除文件且没有对文件所在磁盘进行任何写操作,可以通过以下方法进行数据恢复。


安装extundelete

extundelete官网:http://extundelete.sourceforge.net/

extundelete工具可以从 ext3ext4分区恢复已删除的文件
extundelete使用存储在分区日志中的信息尝试恢复已从分区中删除的文件,无法保证任何特定被删除文件都能够被成功恢复。
extundelete工具暂不支持xfs文件系统中恢复误删文件,可以尝试使用TestDiskxfs中恢复误删文件。


yum安装extundelete

# yum安装extundelete
yum install -y extundelete# 查看extundelete版本
extundelete -v

编译安装extundelete

# 安装依赖包
yum -y install e2fsprogs-libs e2fsprogs e2fsprogs-devel# 下载压缩安装包
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2# 备用下载地址
wget https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/shell_code/extundelete/extundelete-0.2.4.tar.bz2# 解压
tar -jxvf extundelete-0.2.4.tar.bz2cd extundelete-0.2.4# 构建编译选项
./configure# 编译安装
make && make install# 检查是否安装成功
extundelete -v

常用参数

其中,参数(options)有:

参数解释
–version, -[vV]显示软件版本号
–help显示软件帮助信息
–superblock显示超级块信息
–journal显示日志信息
–after dtime时间参数,表示在某段时间之后被删的文件或目录
–before dtime时间参数,表示在某段时间之前被删的文件或目录

动作(action):

参数解释
–inode ino显示节点“ino”的信息
–block blk显示数据块“blk”的信息
–restore-inode ino[,ino,…]恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名
–restore-file ‘path’恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中
–restore-files ‘path’恢复命令参数,表示将恢复在路径中已列出的所有文件
–restore-all恢复命令参数,表示将尝试恢复所有目录和文件
-j journal表示从已经命名的文件中读取扩展日志
-b blocknumber表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件
-B blocksize通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件

尝试数据恢复前置条件

提示:

  • 安装extundelete工具,切勿extundelete工具安装到误删文件所在磁盘。建议安装到系统盘,或者安装到一块新的数据盘
  • 由于使用该工具后续恢复删除文件的操作需要执行umount命令取消分区挂载操作,系统盘分区不能执行umount命令。
  • 系统盘中的文件数据恢复,需要使用liveCD启动后挂载要恢复的系统盘
# 检查是否安装有extundelete工具
rpm -qa extundelete

卸载磁盘分区

卸载被删文件所在磁盘分区。

# 查看当前系统磁盘分区
df -h# 卸载磁盘
umount 挂载点

查看被删除数据信息

此方法不实用,文件都被删了,上哪去看文件的inode编号
定位被误删的文件需要一步步查找,可以先从根分区 inode 查找

https://blog.51cto.com/bosszhang/2069542

# 先要查询好文件的inode编号
## 此处假定文件的inode为2
ls -i file# 查看sdb1分区根目录下面可被恢复的文件及文件夹
# 查询可恢复的数据,带有Deleted标记的表示已经删除的文件
## --inode 2 显示inode号为2的文件的信息
# extundelete 磁盘设备路径 --inode 2
extundelete /dev/sdb1 --inode 2

系统显示类似如下:
图中Deleted状态的既是被删除的数据
恢复被删除数据RECOVERED_FILES目录下,该RECOVERED_FILES目录默认创建在当前目录下。


恢复文件


恢复指定inode号文件

# 恢复对应inode的文件
extundelete 磁盘镜像文件 --restore-inode 21

恢复指定文件名

# 指定文件名test.txt尝试恢复
extundelete /dev/sdb1 --restore-file test.txt

恢复指定目录

空目录不会被恢复

# 恢复指定目录
extundelete /dev/sdb1 --restore-directory /dir1

恢复所有可恢复文件

# 恢复该磁盘下的所有可恢复文件
extundelete 磁盘设备路径 --restore-all

系统显示类似如下:


恢复指定时间的文件

Unix时间戳转换:https://tool.chinaz.com/tools/unixtime.aspx


恢复指定时间戳之前删除的文件

# 恢复指定时间戳之前删除的文件
## --before UNIX时间戳,从1970年1月1日 00:00:00 UTC 起的秒数。
extundelete --before 1451288304 --restore-all /dev/sdb1

恢复指定时间戳之后删除的文件

# 恢复指定时间戳之后删除的文件
## --after UNIX时间戳
extundelete --after 1451288304 --restore-all /dev/sdb1

查看恢复出的文件

# 查看恢复出的文件
ls RECOVERED_FILES/
http://www.lryc.cn/news/175726.html

相关文章:

  • 爬虫 — 多线程
  • Cython 笔记 (Python/Jython)
  • [React] react-hooks如何使用
  • 多个pdf合并成一个文件,3个方法合并pdf
  • 代码随想录 动态规划Ⅸ
  • 【数据结构】散列表(哈希表)的学习知识总结
  • 2023智慧云打印小程序源码多店铺开源版 +前端
  • 利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘
  • 数据分析技能点-数据的种类
  • 解读:ISO 14644-21:2023《洁净室及相关受控环境:悬浮粒子采样》发布指导粒子采样!
  • Java --- MySQL8之索引优化与查询优化
  • 澳大利亚新版《2023年消费品(36个月以下儿童玩具) 安全标准》发布 旨在降低危险小零件的伤害
  • 表格内日期比较计算
  • Linux内核启动流程-第二阶段start_kernel 函数
  • Disruptor:无锁队列设计的背后原理
  • 网络编程-UDP协议(发送数据和接收数据)
  • AI绘画普及课【一】绘画入门
  • Selenium和Requests搭配使用
  • 【JDK 8-函数式编程】4.4 Supplier
  • 后端大厂面试-16道面试题
  • 产品经理认证(UCPM)备考心得
  • E : A DS顺序表_删除有序表中的重复元素
  • 前端教程-vite
  • Java笔记三
  • ElementUI之首页导航与左侧菜单
  • java项目之在线教育资源管理系统(ssm源码+文档)
  • C/S架构学习之UDP服务器
  • 磁盘占用率100% 的优化方案
  • vue组件的通信
  • (搞定)排序数据结构(1)插入排序 选择排序+冒泡排序