EXT类型数据恢复工具extundelete


在 Linux 系统运维工作中,经常会遇到因操作不慎、操作错误等导致文件数据丢失的情况,尤其对于客户企业中一些新手。当然,这里所指的是彻底删除,即已经不能通过“回收站”找回的情况,比如使用“rm -rf”来删除数据。针对 Linux 下的 EXT 文件系统,可用的恢复工具有 debugfs、ext3grep、extundelete 等。 其中 extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4 文件系统。

在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的 数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原 因很简单,因为将文件删除后,仅仅是将文件的 inode 节点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回天无力。所以以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数 据成功的比例。

下面将介绍使用 extundelete 工具如何恢复误删除的文件。

编译安装extundelete

在编译安装extundelete 之前需要先安装两个依赖包e2fsprogs-libs 和e2fsprogs-devel, 这两个包在系统安装光盘的/Package 目录下就有,使用 rpm 或 yum 命令将其安装。e2fsprogs-devel 安装依赖于 libcom_err-devel 包。

安装完依赖包之后,即可将提前上传的 extundelete 软件包解压、配置、编译、安装。

[root@localhost ~]# yum -y install gcc gcc-* make			//编译安装需要的环境
[root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs e2fsprogs wget bzip2			//安装两个依赖包e2fsprogs-libs 和e2fsprogs-devel
[root@localhost ~]# tar jxf extundelete-0.2.4.tar.bz2			//解压
[root@localhost ~]# cd extundelete-0.2.4/			//cd切到extundelete目录
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install			//先执行 ./configure 配置再执行 make编译 再执行 make install 安装
[root@localhost extundelete-0.2.4]# echo $?			//回显是0表示无问题
[root@localhost extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin/			//做个软链接

模拟删除并执行恢复操作

(1)使用 fdisk 命令创建新分区,将其挂载到/test/ 目录下,往该目录下新建一些文件或目录。

[root@localhost ~]# fdisk /dev/sdb			//进入交互式分区创建一块磁盘
......	//省略部分内容Command (m for help): n Partition type:
p	primary (0 primary, 0 extended, 4 free) e	extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos
Disk identifier: 0x30e29e0f
Device Boot	Start	End	Blocks	Id System
/dev/sdb1	2048	41943039	20970496	83 Linux
Command (m for help): w
The partition table has been altered! 
Calling ioctl() to re-read partition table. 
Syncing disks.
[root@localhost ~]# partprobe /dev/sdb			//重读分区表
[root@localhost ~]# mkfs.ext3 /dev/sdb1			//格式化磁盘
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label= OS type: Linux
Block size=4096 (log=2)
......	//省略部分内容
Allocating group tables: done 
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 
[root@localhost ~]# mkdir /test/
[root@localhost ~]# mount /dev/sdb1 /test/			//挂载
[root@localhost ~]# mkdir /test/xiaoxu
[root@localhost ~]# touch /test/aa.txt
[root@localhost ~]# ls /test/			//查看test目录下的文件和目录
aa.txt  lost+found  xiaoxu			
[root@localhost ~]# extundelete /dev/sdb1 --inode 2        //查看文件系统/dev/sdb1 下存在哪些文件,其中--inode 2 代表从 i 节点为 2 的文件开始查看,2 代表该文件系统最开始的目录
Would you like to continue? (y/n)			//输入y按回车

(2)模拟误操作并恢复

[root@localhost ~]# rm -rf /test/*			//模拟误操作
[root@localhost ~]# umount /test/			//误操作之后第一时间取消挂载
[root@localhost ~]# extundelete /dev/sdb1 --restore-all			//恢复数据,只能支持ext3系列的恢复

执行完恢复的命令后,在当前目录下会出现一个/RECOVERED_FILES/目录,里面保 存了已经恢复的文件。

[root@localhost ~]# ls
anaconda-ks.cfg extundelete-0.2.4 extundelete-0.2.4.tar.bz2 RECOVERED_FILES 
[root@localhost ~]# cd RECOVERED_FILES/
[root@localhost RECOVERED_FILES]# ls
aa.txt  lost+found  xiaoxu	

当然 extundelete 的用法还有很多,可以通过 help 查看详细用法。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值