extundelete反删除总结

本文介绍extundelete工具,用于ext3/ext4分区的数据恢复。包括安装步骤、使用方法及命令详解,例如按时间戳恢复文件等高级操作。

extundelete反删除总结

一、介绍extundelete

1.extundelete的文件恢复工具,该工具最给力的一点就是支持ext3/ext4双格式分区恢复。

2.在实际线上恢复过程中,切勿将extundelete安装到你误删的文件所在硬盘,这样会有一定几率将需要恢复的数据彻底覆盖。

3. extundelete还是有很大的不完整性,基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够强大

4. extundelete执行完毕后在当前目录生产一个RECOVERED_FILES目录,里面即是恢复出来的文件,还包括文件夹。

5.任何的文件恢复工具,在使用前,均要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用。

umount /dev/partition

mount -o remount,ro /dev/partition

6.保持良好的习惯,绝对比恢复数据要更简单。

二、安装

0.yum install e2fsprogs* e2fslibs* -y

1.wgethttp://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

2.tar -axf extundelete-0.2.4.tar.bz2 -C /usr/local/src

3.cd /usr/local/src/extundelete-0.2.4

4../configure --prefix=/usr/local/extundelete

5.make

6.make install

7.ln -s /usr/local/extundelete/bin/* /usr/local/bin/

三、使用及命令

1. umount或者readonly分区

umount /dev/partition

mount -o remount,ro /dev/partition

2.切换到存储恢复文件的目录

cd $dir

3.命令

Usage:extundelete [options] [--] device-file

Options:

--superblock打印指定分区的超级块信息。如不加任何的参数,

此选项是默认的.

extundelete --superblock /dev/sda3 <---> extundelete /dev/sda1

--journal显示块的日志信息,同--superblock

extundelete --journal /dev/sda1

--after dtime只恢复指定时间【dtime】(时间戳)之后,被删除的数据

假如删除的时间大概是2011-7-26 1430

date -d "Jul 26 14:30" +%s

得出秒数1234567890

恢复此时间后删除的所有文件

extundelete /dev/sdb1 --after 1234567890 --restore-all

--before dtime只恢复指定时间【dtime】(时间戳)之前,被删除的数据

Actions:

--inode ino显示某分区inodex的信息,一般是查看该分区下所有的文件.

extundelete --inode 2 /dev/sda1

--block blk显示某分区blockx的信息.

--restore-inode ino[,ino,...]恢复一个或多个指定inode号的文件,该恢复的文件,

保存在当前目录下的RECOVERED_FILES里,文件名为【file.$inode

extundelete /dev/sda1 --restore-inode 13,14

--restore-file 'filename'恢复指定的文件(被删除的),文件位于当前目录下

RECOVERED_FILES/$filename,文件名还是原来的

extundelete /dev/sda1 --restore-file initramfs-2.6.32-358.el6.x86_64.img

--restore-files 'read_filename'恢复指定的文件(真实存在的)中的内容,

文件位于当前目录下的RECOVERED_FILES/$filename,文件名还是原来的

vi test_restore.txt(结尾不可有多余的空格)

System.map-2.6.32-358.el6.x86_64

config-2.6.32-358.el6.x86_64

symvers-2.6.32-358.el6.x86_64.gz

vmlinuz-2.6.32-358.el6.x86_64

initramfs-2.6.32-358.el6.x86_64.img

extundelete /dev/sda1--restore-files test_restore.txt

--restore-directory 'dir-name'恢复指定的目录,文件位于当前目录下的

RECOVERED_FILES/$dir-name,文件名还是原来的

extundelete /dev/sda1--restore-files grub

--restore-all恢复某分区里所有被删除的数据,文件名还是原来的

extundelete /dev/sda1--restore-all

4.

--superblock


--journal


--after dtime

假如删除的时间大概是2011-7-26 1430

date -d "Jul 26 14:30" +%s

得出秒数1234567890

恢复此时间后删除的所有文件

/usr/local/bin/extundelete /dev/sdb1--after1234567890 --restore-all


--before dtime


--inode



--restore-inode ino[,ino,...]


--restore-file 'filename'


--restore-files 'read_filename'


--restore-directory 'dir-name'


--restore-all

### 解决extundelete恢复已删除文件时提示已放弃的原因及解决方案 #### 原因分析 当使用 `extundelete` 工具尝试恢复已删除文件时,如果遇到“已放弃”的错误提示,通常是因为以下几个原因: - 文件系统已被修改或有新的数据写入。这可能导致原本被标记为可恢复的数据块已经被覆盖[^1]。 - 日志卷中的日志记录不完整或损坏。例如,在执行恢复操作之前未正确卸载逻辑卷 (LV),可能会导致文件系统元数据受损[^2]。 #### 解决策略 为了提高成功恢复的可能性并解决上述问题,可以采取以下措施: 1. **立即停止任何可能影响目标分区的操作** 尽量减少对包含待恢复文件的磁盘分区的一切读写活动,防止新数据进一步破坏原有结构。 2. **确保文件系统一致性** 在进行恢复前,建议先通过 `umount` 卸载相关设备,并利用 `e2fsck -f` 对 LV 的文件系统进行全面检测修复: ```bash umount /dev/vgdata/LogVol00 e2fsck -f /dev/vgdata/LogVol00 ``` 3. **备份现有状态** 创建整个磁盘镜像作为安全副本,以便即使初次恢复失败也能再次尝试其他方法而不丢失更多机会。 4. **调整参数重新运行extundelete** 如果默认设置无法完成任务,则可以根据具体情况调整命令选项来优化查找范围;比如指定特定时间戳区间内的变更记录等特性功能: ```bash extundelete --after YYYY-MM-DD_HH:MM:SS /dev/vgdata/LogVol00 --restore-directory var/lib/MySQL/aqsh/ ``` 5. **考虑第三方工具辅助** 当常规手段难以奏效时,不妨探索一些更专业的商业级软件产品,它们往往具备更强健的数据挖掘算法以及图形界面支持,有助于提升找回几率。 6. **预防为主** 定期做好重要资料的异地冗余保存工作,建立完善的灾难恢复预案机制,从根本上规避此类风险事件的发生概率。 ```python import os def check_file_system(device_path): """Check and repair file system on specified device.""" unmount_command = f"umount {device_path}" fs_check_command = f"e2fsck -f {device_path}" try: os.system(unmount_command) result = os.popen(fs_check_command).read() print(result) except Exception as error_message: print(f"An exception occurred while checking the filesystem: {error_message}") if __name__ == "__main__": device_to_inspect = "/dev/vgdata/LogVol00" check_file_system(device_to_inspect) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值