误删linux文件恢复

2023-05-16

Linux下文件误删除,使用extundelete恢复测试过程

extundelete下载官网地址:https://pkgs.org/download/extundelete

  • 给虚拟主机添加一块磁盘,磁盘为/dev/sdb
[root@localhost bin]# cat /proc/scsi/scsi 
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware   Model: Virtual disk     Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05
[root@localhost bin]# echo "scsi add-single-device 2 0 1 0">/proc/scsi/scsi
[root@localhost bin]# fdisk -l
[root@localhost bin]# fdisk /dev/sdb 
[root@localhost bin]# partprobe /dev/sdb
[root@localhost bin]# mkfs.xfs /dev/sdb1
[root@localhost bin]# mount /dev/sdb1 /mnt/
  • 执行误操作:
[root@localhost mnt]# ls
redis-4.0.11  redis-4.0.11.tar.gz
[root@localhost mnt]# rm -rf redis-4.0.11*
  • 将误操作所在分区进行只读保护

如果确定文件被误删,在没有备份的情况下请马上对分区实施写入保护(预防新的写入覆盖误删的块数据,因此权限给只读):

[root@localhost /]# mount -o remount,ro /dev/sdb1 
[root@localhost /]# mount -o remount,ro /mnt/
  • 安装部署数据恢复工具extundelete

安装依赖包

[root@localhost /]# yum -y install gcc-c++ e2fsprogs.x86_64 e2fsprogs-devel.x86_64
[root@localhost /]# cd /app/soft/
[root@localhost soft]# wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@localhost soft]# tar -jxvf extundelete-0.2.4.tar.bz2
[root@localhost soft]# cd extundelete-0.2.4
[root@localhost extundelete-0.2.4]# ./configure
Configuring extundelete 0.2.4
Writing generated files to disk
[root@localhost extundelete-0.2.4]# make
make -s all-recursive
Making all in src
extundelete.cc: In function ‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’:
extundelete.cc:1272:29: warning: narrowing conversion of ‘search_flags’ from ‘int’ to ‘ext2_ino_t {aka unsigned int}’ inside { } [-Wnarrowing]
    buf, match_name2, priv, 0};
                             ^
[root@localhost extundelete-0.2.4]# make install
Making install in src
  /bin/install -c extundelete '/usr/local/bin'
[root@localhost extundelete-0.2.4]# extundelete -v
extundelete version 0.2.4
libext2fs version 1.42.9
Processor is little endian.
[root@localhost extundelete-0.2.4]# extundelete --help

其中,参数(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,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。
  • 文件恢复

原理:从根节点(inode=2)开始找到被删除文件的i节点,然后recover i节点。 以下是模拟删除redis-4.0.11.tar.gz(文件)和redis-4.0.11 (目录)

[root@localhost extundelete-0.2.4]# extundelete /dev/sdb --inode 2
extundelete: Bad magic number in super-block when trying to open filesystem /dev/sdb
[root@localhost extundelete-0.2.4]# df -Th /dev/sdb1 
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      xfs   100G  176K  100G   1% /mnt
[root@localhost extundelete-0.2.4]#

不支持xfs文件格式的恢复,实验中重新格式化成ext4格式测试。

[root@localhost /]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 800 groups loaded.
Group: 0
Contents of inode 2:
0000 | ed 41 00 00 00 10 00 00 8a 33 0e 5c 3e 34 0e 5c | .A.......3.\>4.\
0010 | 3e 34 0e 5c 00 00 00 00 00 00 03 00 08 00 00 00 | >4.\............
0020 | 00 00 08 00 04 00 00 00 0a f3 01 00 04 00 00 00 | ................
0030 | 00 00 00 00 00 00 00 00 01 00 00 00 2e 24 00 00 | .............$..
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0080 | 1c 00 00 00 24 de 02 30 24 de 02 30 24 0e 0b d4 | ....$..0$..0$...
0090 | a0 31 0e 5c 00 00 00 00 00 00 00 00 00 00 00 00 | .1.\............
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 4096
Access time: 1544434570
Creation time: 1544434750
Modification time: 1544434750
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 3
Blocks count: 8
File flags: 524288
File version (for NFS): 0
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 127754, 4, 0, 0, 1, 9262, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0

File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
redis-4.0.11.tar.gz                               12             Deleted
redis-4.0.11                                      5505025        Deleted
[root@localhost /]# 

恢复过程不要在误删分区进行,谨防inode. block块相互覆盖

恢复文件(可根据文件名进行恢复):

[root@localhost /]# extundelete /dev/sdb1 --restore-file redis-4.0.11.tar.gz
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 153 groups loaded.
Loading journal descriptors ... 79 descriptors loaded.
Successfully restored file redis-4.0.11.tar.gz
[root@localhost /]# 

恢复目录(根据目录名恢复):

[root@localhost /]# extundelete /dev/sdb1 --restore-directory redis-4.0.11
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 153 groups loaded.
Loading journal descriptors ... 79 descriptors loaded.
Searching for recoverable inodes in directory redis-4.0.11 ... 
26 recoverable inodes found.
Looking through the directory structure for deleted files ... 
5 recoverable inodes still lost.
[root@localhost /]# 

恢复所有数据

[root@localhost /]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 153 groups loaded.
Loading journal descriptors ... 79 descriptors loaded.
Searching for recoverable inodes in directory / ... 
26 recoverable inodes found.
Looking through the directory structure for deleted files ... 
1 recoverable inodes still lost.
[root@localhost /]#

在当前目录下ECOVERED_FILES的目录,在目录里就可以看到被误删除的文件以及目录,恢复回来的文件权限可能会变化。extundelete还可以实现恢复某个时间段的数据。可以通过“--after”和“--before”参数实现!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

误删linux文件恢复 的相关文章

随机推荐

  • 利用for循环打印实心棱形和空心棱形

    一 要求 xff1a 提示用户输入棱形的行数 xff0c 比如输入5时 xff0c 打印如下实心棱形和空心棱形 xff08 由于排版问题 xff0c 可能显示会有变形 xff09 xff1a 二 分析 xff1a A 图形是上下对称的 B
  • Faiss教程:GPU

    Fassi通过CUDA支持GPU xff0c 要求3 5以上算力 xff0c float16要求CUDA7 5 43 通过index gpu to cpu可以将索引从GPU复制到CPU xff0c index cpu to gpu 和 in
  • 浏览器的强缓存与弱缓存

    在浏览器众多缓存中的HTTP缓存可能很多人对这个的概念并没有很清晰 xff0c 每个人都知道进入一次网页之后再刷新一次页面 xff0c 加载速度会比首次加载快非常多 xff0c 每个人都知道这是浏览器缓存的magic xff0c 但是对此背
  • 密钥协商(密钥交换)机制的讲解

    国标文件涉及密钥协商算法的函数 生成密钥协商参数并输出计算会话密钥产生协商数据并且计算会话密钥 密钥协商 xff08 交换 xff09 算法及其原理 密钥交换 协商目的 密钥协商机制 是 xff1a xff08 在身份认证 的前提下 xff
  • 基于牛客网Js v8引擎提供的读/写方法做的调试页面

    项目地址 正直秋招季 xff0c 对找工作的人来说 xff0c 牛客网肯定不陌生 xff0c 现在很多大型互联网公司的在线笔试都是在牛客网上面进行的 xff08 好像有打广告的嫌疑 xff09 Js有那么多的操作数据结构的api xff0c
  • 本地调试spark报org.apache.hadoop.io.nativeio.NativeIO$Windows.createFile...

    本地调试spark xff0c saveAsText 报错 org apache hadoop io nativeio NativeIO Windows createFileWithMode0 Ljava lang String xff1b
  • Element表格分页数据选择+全选所有完善批量操作

    后台管理系统中的列表页面 xff0c 一般都会有对列表数据进行批量操作的功能 xff0c 例如 xff1a 批量删除 批量删除等 之前项目中只是简单的用到Element框架中常规的属性 事件 在一次机缘巧合下 xff0c 了解到一个公司内部
  • idea本地调试web报“There is no configured/running web-servers found! Please, run any web-config”...

    为什么80 的码农都做不了架构师 xff1f gt gt gt 本文永久更新地址 xff1a https my oschina net bysu blog 3051091 1 按照网上的各种配置 如下图 还是不行 2 网上还说要先run才行
  • Visual Studio Code语言设置为中文

    1 Visual Studio Code下载安装 https code visualstudio com 2 语言设置 2 1 快捷键 Windows Linux 快捷键是 xff1a ctrl 43 shift 43 p macOS 快捷
  • 查看zookeeper注册中心是否有注册服务

    为什么80 的码农都做不了架构师 xff1f gt gt gt 查看zookeeper注册中心是否有注册服务可以在服务器上看 xff0c 也可以在dubboadmin看哦 1 在服务器上看 xff1a 1 xff09 查找zookeeper
  • matplotlib 设置图形大小时 figsize 与 dpi 的关系

    matplotlib 中设置图形大小的语句如下 xff1a fig 61 plt figure figsize 61 a b dpi 61 dpi 其中 xff1a figsize 设置图形的大小 xff0c a 为图形的宽 xff0c b
  • iOS- SQLite3的基本使用

    iOS 简单说说iOS移动客户端SQLite3的基本使用 1 为什么要使用SQLite3 xff1f 大量数据需要存储 管理数据 xff0c 存储数据 SQLite是一种关系型数据库 xff08 也是目前移动客户端的主流数据库 xff09
  • Daily Scrum: 2012/12/8

    成员角色今天工作明天计划王安然PM Dev已请假 xff0c 开会 继续开会 黄杨PM Dev已收拾skynet的小问题并且通过测试 xff08 312 xff09 xff0c 编写武器项cracker xff08 313 xff09 完成
  • 【Python】控制鼠标点击

    from pymouse import PyMouse m 61 PyMouse a 61 m position 获取当前坐标的位置 print a m move 50 500 鼠标移动到 x y 位置 a 61 m position pr
  • C++ 标准程序库std::string 详解

    现在一般不再使用传统的char 而选用C 43 43 标准程序库中的string类 xff0c 是因为string标准程序和char 比较起来 xff0c 不必担心内存是否足够 字符串长度 等等 xff0c 而且作为一个类出现 xff0c
  • Lighttpd 搭建 Web 服务器

    背景 xff1a 公司项目用到了lighttpd xff0c 由于自己没有接触过 xff0c 所以做下记录 简介 xff1a Lighttpd 是一个德国人领导的开源Web服务器软件 xff0c 其根本的目的是提供一个专门针对高性能网站 x
  • lua中.和:的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt lua中 和 都可以用于方法的声明和调用 和table配合使用 和 最大的不同点 xff0c 就是 xff1a 会把调用者自身 xff0c 传入到函数中 如下代码 xff1
  • 一个很有意思的玩意:FlightGear,开源飞机模拟器

    你一定很想知道开F22战机是什么感觉 xff0c 甚至梦想有一天自己也能驾驭着飞机在空中飞翔 现实生活中 xff0c 做飞行员可不是一件简单的事 xff0c 既然如此 xff0c 我们就别想那么多 xff0c 但有了FlightGear这个
  • 第二学期无人机操作师结业复习测试

    无人机操作师结业复习测试 姓名 xff1a 学号 xff1a 得分 xff1a xff08 本套试卷考试时间为90分钟 xff0c 共分选择题 判断题 填空题 问答题四大部分 xff0c 总分100分 xff09 一 选择题 xff08 共
  • 误删linux文件恢复

    Linux下文件误删除 xff0c 使用extundelete恢复测试过程 extundelete下载官网地址 xff1a https pkgs org download extundelete 给虚拟主机添加一块磁盘 xff0c 磁盘为