Linux运维养成记-数据恢复软件 extundelete

1. 如何使用 rm 命令

在生产环境中尽量避免使用rm命令,可以用过mv命令代替,将要删除的文件或目录 mvtmp目录下,在使用脚本定期清理tmp下的内容。这样做,一定程度上降低了误删数据的风险。
保证数据安全最好的办法就是备份,因此在生产环境中应以备份为核心,然后把数据恢复作为辅助。

2. extundelete 介绍

在 Linux 下,数据恢复工具有很多,最常用的为extundelete
extundelete它通过分析文件系统的日志,解析出所有文件的 inode 信息,从而恢复ext3,ext4文件系统下被误删的文件。extundelete的恢复机制是扫描 inode 和恢复数据同时进行,支持单个文件,单个目录,inode,block,完整磁盘恢复等。

3. 安全extundelete

extundelete官网http://extundelete.sourceforget.net/,在安装extundelete前先用yum安装两个依赖包e2fsprogse2fsprogs-lib
下面是安装extundelete过程:

tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure
make
make install

安装成功后,会生成一个extundelete可执行文件,使用extundelete --help获取使用方法。

4. extundelete用法详解

extundelete用法如下:
extundelete [option] [action] device-file
其中,参数(option)有:

  • –version,-[vV],显示软件版本号
  • –superblock,显示超级块信息
  • –journal,显示日志信息
  • –after dtime,时间参数,表示在某段时间之后被删的文件或目录
  • –before dtime,时间参数,表示在某段时间之前被删的文件或目录
  • –restore-file ‘path’,恢复命令参数,表示将恢复指定路径的文件,并把恢复后的文件放在当前目录下的 RECOVERED_FILES 目录中。
  • –restore-files ‘path’,表示将恢复在路径中已列出的所有文件。
  • –restore-all,表示恢复所有目录和文件

5. extundelete 实战

在数据被误删后,第一时间是卸载被删数据所在的磁盘或磁盘分区,如果是系统根分区的数据被删,需要进入单用户模式,并把根分区以只读模式挂载,防止数据块被新的数据覆盖后,数据完全丢失。

5.1 模拟数据误删

模拟数据误删:

mount /dev/sdc1 /data
cp /etc/passwd /data
cp -r /app/ngix /data

rm -rf /data/*

5.2 卸载磁盘分区

在将数据误删后,立刻需要做的就是卸载这块磁盘分区:

umount /data  

5.3 查询可恢复的数据信息

通过命令可查询/dev/sdc1分区可恢复的数据信息:

extundelete /dev/sdc1 --inode 2
#这里--inode 2 查看根目录的 inode,可以通过命令 ls -id / 来查询根目录的 
inode

上面命令的输出中标记 Delete 的状态是已经删除的文件或目录,同时能看到被删除文件的 inode,接下来可以恢复这些文件。

5.4 恢复单个文件

执行以下命令恢复单个文件:

extundelete /dev/sdc1 --restore-file passwd
#这里恢复 passwd 单个文件
#恢复成功后文件会保存在当前目录的 RECOVERED_FILES目录下,可以 cd 进去找到

5.5 恢复单个目录

恢复/data下的/app/ngix文件夹操作如下:

extundelete /dev/sdc1 --restore-directory /nigx
#恢复成功后文件会保存在当前目录的 RECOVERED_FILES目录下,可以 cd 进去找到

5.6 恢复所有误删数据

恢复整个/dev/sdc1命令如下:

extundelete /dev/sdc1 --restore-all
#恢复成功后文件会保存在当前目录的 RECOVERED_FILES目录下,可以 cd 进去找到

5.7 恢复某个时间段的数据

恢复某时间段命令如下:

extundelete /dev/sdc1 --after 1570816318 --restore-all /dev/sdc1
#这里1570816318是时间,起算时间为“1970-01-01 00:00:00 UTC”通过 “date #+%s”命令可以得到
#恢复成功后文件会保存在当前目录的 RECOVERED_FILES目录下,可以 cd 进去找到
发布了18 篇原创文章 · 获赞 26 · 访问量 6964

猜你喜欢

转载自blog.csdn.net/weixin_45181224/article/details/102500472