[分享] 用extundelete恢复Linux下误删的文件

[复制链接]

该用户从未签到

15

主题

15

回帖

200

积分

[INTOHARD]排长

Rank: 3Rank: 3

积分
200
发表于 2015-2-3 16:53:32 | 显示全部楼层 |阅读模式
“慎用rm -rf命令,除非你知道此命令带来的后果。”这是一条Linux用户守则,虽然大多数用户都明白这条语句的含义,但是我觉得还需要完善一下,为这条语句加上一个使用前提:在你确认自己拥有清醒头脑,并且输入没有误差的时候可以使用rm -rf命令。这次惊心动魄的起因就是我将rm –rf log* 命令错误的输成了rm –rf log *,造成了当前目录下的所有项目文件全部被误删除。

ls了两回,确定自己不是眼花后开始寻找解决办法,昔日在Windows下有很多次数据恢复经历,但在Linux下这还是第一次,在网上发现了神器extundelete,事后也证明它确实是神器,于是马上准备下载安装,但是问题来了,数据恢复成功的铁律就是旧数据不被覆盖,开发用的Linux安装在VMware中,使用默认磁盘分区结构,只单独挂载了/boot和/,用户数据在/home/user,无法单独umount这个目录啊,这也说明了安装时为什么最好将/home单独mount为一个设备,找了一些资料后发现更不能轻易变更分区结构了,于是干脆就死马当活马医,准备直接安装extundelete,不直接修改/home/user的内容,也许文件还有救。

安装extundelete:

extundelete需要依赖e2fsprogs和e2fslibs,真庆幸当初我把RHEL配置了CentOS的yum,不然又要为了依赖包耗费脑细胞了。。。

  1. yum install e2fsprogs*
  2. yum install e2fslibs*
复制代码


安装完成后解压extundelete-0.2.4.tar.bz2,用三步走方法安装extundelete:

  1. ./configure
  2. make
  3. make install
复制代码


恢复误删的文件:

先用df看一眼/挂载到哪里了,然后直接输入要恢复文件的目录:

  1. [edward@www 桌面]$ df -Th
  2. 文件系统    类型      容量  已用  可用 已用%% 挂载点
  3. /dev/mapper/VolGroup-lv_root
  4.               ext4     18G  6.8G  9.7G  42% /
  5. tmpfs        tmpfs    504M  420K  504M   1% /dev/shm
  6. /dev/sda1     ext4    485M   43M  417M  10% /boot
  7. .host:/     vmhgfs    386G  334G   53G  87% /mnt/hgfs
  8. [root@www ~]# extundelete /dev/mapper/VolGroup-lv_root --restore-directory '/home/edward/WtvSKTrans
复制代码


extundelete会自动扫描指定目录下所有已删除的文件,这里因为我没有umount根目录,有一些文件已经被覆盖\破坏而无法恢复了,庆幸的是都不是什么重要的文件,项目的主要源文件都恢复了,这是最让我感到欣慰的。

001.png

恢复后的文件保存在当前目录下的RECOVERED_FILES目录中,不知神马原因恢复后的文件名凌乱了,具体应该说是文件名错位了,不过这已经是最好的结果了,真心感谢extundelete的作者。

002.png

003.png

事后思考:

用rm -rf时必须保持清醒的头脑,这个前面已经说过了,不然后果就是心惊肉跳,如果再因为数据恢复不了出了业务事故而丢了工作,那可太得不偿失了。从防范的角度,不如把rm -rf这个命令换成mv .trash,google找到了一些用脚本改写rm的方法,但是实际尝试后发现不尽人意,于是找到了trash-cli命令行回收站,trash-cli能将rm与图形界面回收站结合,既直观又安全,使用方法请参考下篇。(edwardcmh)

该用户从未签到

2

主题

1132

回帖

1003

积分

[INTOHARD]工兵

Rank: 1

积分
1003
发表于 2015-2-4 19:37:25 | 显示全部楼层
good lesson.
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2023-7-31 23:16
  • 签到天数: 3033 天

    [LV.Master]三朝元老

    378

    主题

    2783

    回帖

    1万

    积分

    [INTOHARD]旅长

    Rank: 9Rank: 9Rank: 9

    积分
    17191
    QQ
    发表于 2015-3-28 21:20:55 | 显示全部楼层
    extundelete也是基于日志的,所以发现误删除后应该首先umount,然后再用extundelete恢复。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    38

    回帖

    79

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    79
    发表于 2016-12-28 20:16:06 | 显示全部楼层
    很好 我很喜欢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表