rm误删文件恢复
- 问题描述
- 安装extundelete
- yum安装extundelete
- 编译安装extundelete
- 常用参数
- 动作(action):
- 尝试数据恢复前置条件
- 卸载磁盘分区
- 查看被删除数据信息
- 恢复文件
- 恢复指定inode号文件
- 恢复指定文件名
- 恢复指定目录
- 恢复所有可恢复文件
- 恢复指定时间的文件
- 恢复指定时间戳之前删除的文件
- 恢复指定时间戳之后删除的文件
- 查看恢复出的文件
问题描述
在Linux实例中,使用rm命令误删除文件
,且没有
对文件所在磁盘进行任何写操作
,可以通过以下方法进行数据恢复。
安装extundelete
extundelete
官网:http://extundelete.sourceforge.net/
extundelete
工具可以从 ext3
或 ext4
分区恢复已删除的文件
。
extundelete
使用存储在分区日志中的信息
来尝试恢复
已从分区中删除的文件,无法保证任何特定被删除文件都能够被成功恢复。
extundelete
工具暂不支持
从xfs
文件系统中恢复误删文件
,可以尝试使用TestDisk
从xfs
中恢复误删文件。
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.bz2
cd 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/