用extundelete恢复rm -rf删的文件
“慎用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 2 | yum installe2fsprogs*yum installe2fslibs* | 
安装完成后解压extundelete-0.2.4.tar.bz2,用三步走方法安装extundelete:
| 1 2 3 | ./configuremakemakeinstall | 
恢复误删的文件:
先用df看一眼/挂载到哪里了,然后直接输入要恢复文件的目录:
| 1 2 3 4 5 6 7 | [edward@www 桌面]$ df-Th文件系统    类型      容量  已用  可用 已用%% 挂载点/dev/mapper/VolGroup-lv_root              ext4     18G  6.8G  9.7G  42% /tmpfs        tmpfs    504M  420K  504M   1% /dev/shm/dev/sda1ext4    485M   43M  417M  10% /boot.host:/     vmhgfs    386G  334G   53G  87% /mnt/hgfs | 
1> 恢复单个文件
[root@orclA tmp]# extundelete /dev/sdc1 --restore-file '/top/rm01.txt'
2>恢复目录
[root@orclA tmp]# extundelete /dev/sdc1 --restore-directory '/top/rm'
3>恢复整个磁盘
[root@orclA tmp]# extundelete /dev/mapper/vg_tim-lv_home --after 1481853690 --restore-all (时间戳计算:date -d "Dec 16 10:01" +%s)
extundelete会自动扫描指定目录下所有已删除的文件,这里因为我没有umount根目录,有一些文件已经被覆盖\破坏而无法恢复了,庆幸的是都不是什么重要的文件,项目的主要源文件都恢复了,这是最让我感到欣慰的。

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


事后思考:
用rm -rf时必须保持清醒的头脑,这个前面已经说过了,不然后果就是心惊肉跳,如果再因为数据恢复不了出了业务事故而丢了工作,那可太得不偿失了。从防范的角 度,不如把rm -rf这个命令换成mv .trash,google找到了一些用脚本改写rm的方法,但是实际尝试后发现不尽人意,于是找到了trash-cli命令行回收站,trash- cli能将rm与图形界面回收站结合,既直观又安全,使用方法请参考我的这篇博文。
参考资料(感谢原作者分享):
参考:
http://blog.chinaunix.net/uid-25544300-id-3278695.html
http://my.oschina.net/fufangchun/blog/176550
用extundelete恢复rm -rf删的文件的更多相关文章
- 高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件
		高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ... 
- centOS6.4 extundelete工具恢复rm -rf 删除的目录
		PS:补充下,我在fedora 19上运行的时候遇到的一个问题: [root@localhost extundelete-]# ./configure Configuring extundelete ... 
- centOS6.4 extundelete工具恢复rm -rf 删除的目录[转]
		原文:http://www.cnblogs.com/patf/p/3368765.html PS:补充下,我在fedora 19上运行的时候遇到的一个问题: 1 [root@localhost ext ... 
- Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
		1.下载extundelete包,安装依赖 我用的是Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel. yum ... 
- ubuntu恢复rm -rf误删文件
		使用extundelete工具 sudo apt-get install extundelete 恢复操作命令 首先需要umount或者read only 分区 umount /dev/partit ... 
- centos rm -rf 恢复删除的文件
		Linux有时候执行了 rm -rf 等操作误删了文件绝对是一件可怕的事情,好在有一些解决的办法可以临时救急.这时我们就要用到一款叫做extundelete的工具了. 目录[-] 依赖 安装 查找要恢 ... 
- rm -rf删除过多文件提示参数过长
		cd /var/tmp/ find . -name "*.log"|xargs rm -rf "*.log" 
- TestDisk 恢复rm -rf 的文件
		Linux操作系统下使用TestDisk恢复已删除的文件或目录 原创作者:szyzln/2015.10.16 转载需注明原始出处! 说明: testdisk和photorec是著名的恢复数据,而绝 ... 
- CentOS 恢复 rm -rf * 误删数据(转)
		一. 将磁盘分区挂载为只读 这一步很重要,并且在误删除文件后应尽快将磁盘挂载为只读.越早进行,恢复的成功机率就越大. 1. 查看被删除文件位于哪个分区 [root@localhost ~]# mo ... 
随机推荐
- shared_ptr智能指针源码剖析
			(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化.根据文档 (http://www.boost.org/doc/ ... 
- [分 享] PHPCMS V9 更换域名,附件地址无法批更新(更换变便)问题>解决方法!!
			大家应该都有在域名更换(比如说,从本地上传到空间)的情况下,用内容>附件管理>附件地址替换 功能. 基本上替换不了所有表中原来域名的地址. 现PHPCMS V9最新版本的依旧存在些问题. ... 
- 如何寻找java的安装路径问题
			关于不知道JAVA安装在linux的哪 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans ... 
- 关于wireshark的两个抓包过滤显示的基本语法
			关于wireshark的两个基本语法 关于wireshark的两个基本语法 1. Capture Filters 语法:<Protocol name><Direction>&l ... 
- 精读《javascript高级程序设计》笔记三——面向对象的程序设计
			重点来了,我认为这一章值得好好地反复地看.看第一遍 还是懵懵懂懂,现在看第二遍,终于能看出点意思了. 创建对象 工厂模式 function createPerson(name, age, job){ ... 
- 对原生js的一些小尝试
			意图仿造JQ操作以及弄个个人工具箱,不断完善中,代码均为个人摸索,所以肯定会有不少不足的地方,希望读者们能提出来. var xzhUtils = { //-----DOM对象添加类----- //-- ... 
- 組裝工廠設置IQC的目的
			在電子組裝工廠的組織裡,一般都會有 IQC (Incoming Quality Control) 這個單位,台灣稱之為「入(進)料管控」,大陸稱之為「來料管控」,其最主要目的在攔檢所有買進材料是否符合 ... 
- 如何在Delphi中调用VC6.0开发的COM
			上次写了如何在VC6.0下对Delphi写的COM进行调用,原本想马上写如何在Delphi中调用VC6.0开发的COM时,由于在写事例程序中碰到了个很怪的问题,在我机子上用VC写的接口程序编译能通过. ... 
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
			MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ... 
- javascript抽象工厂模式
			<!doctype html><html lang="en"><head> <meta charset="UTF-8" ... 
