首页 Linux通用技术 - Linux发行版技术 - 企业应用 - 实验室  Linux论坛 - 网站导航

誉天红帽认证架构师RHCA培训
您的位置: 首页 >> 网站导航 >> Linux通用技术 >> Linux技术与应用 >> 查看内容 -发布信息
谁说误删Ext3下的文件一定找不回
Enbrain发布于 2008-1-08 | 次阅读   字号:     (网友评论 0 条) 我要评论


原文出处:http://blog.cn-ic.org/?p=38

说来欠这篇文章有点时间了。事情发生在大概就在9/23吧(查看恢复文件的时间戳推算的),现在算算都一个多月过去了。我虽然不是干程序员的活,但也喜欢用PHP写一些东西给我的工作带来一些便利,因为那可以算是我用的比较熟练的语言。那是一个中午,经过近两周零零碎碎的更新,这个小系统的一个较大的功能改进算是基本完成了。于是准备备份一个版本。不知道是饿了,还是晕了,我居然敲了这个命令:

rm *.php

查了一下,这两周以来居然没有任何版本的备份。连忙拔下电源插座,以防任何数据写入该区域,那可就万劫不复了。

拆下硬盘,请公司IT部的朋友帮忙恢复。他在windows下用一些忙活了半天,结果是能恢复一些文件,但是没有一个是我要的。更气人的是,那些软件大都有按文件后缀名查询恢复的功能,但是没有一个支持php为后缀的,包括大名鼎鼎的easyrecover。

既然别人帮不上忙,那只能靠自己了。一阵google之后得出两个结论:

1.中文的内容都告诉我,ext2可以恢复,其他没戏。各个技术网站都重复转载着同一篇操作复杂的技术文章。各技术论坛里面关于数据恢复主题的更弥漫着一种悲观的气氛,通常都有这样的回复:“楼主节哀”,并且从技术角度告诉我种种不可恢复的理由。

2.英文内容好些,有一些专用的恢复软件,号称可以恢复ext3文件系统的文件,尝试了各种Demo版软件(大都可查找,不可恢复),找都找不到。我想那些软件也许对ext2有效,而对ext3可能只是一个营销手段吧。

就在我正打算重写这两个星期以来的代码的时候。在一个英文论坛的帖子里面找到了通往我的救星的一个链接

他在这里:http://www.csummers.org/index.ph ... nux-ext3-partition/

他的开头是这么写的
Every once in a while I do something really, really stupid. Like, say, for instance, delete a whole directory of very important code that I’m working on and my last backup is a couple of weeks old (because of a server move and my failure to re-setup my cron backup). How did this happen? Well, for one, I was coding at about 5:30 a.m. before my caffeine had set in, and, secondly, I was rm -rf’ing with tab-completion. Almost instantly after I pressed Enter I realized what I had done. Tragedy. Or so I thought…

TNND,这不是在说我吗?文章的内容就不一一翻译了,他的思想方法其实很简单:用string命令把欲恢复的分区里的所有ASCII字符dump成一个巨大的txt文件。然后在这个文件里面找你要的东西吧。下面说说我按图索骥做成的成功案例,以及其中的心得:

1. 将硬盘装到另外一台装有Linux的电脑上,将欲恢复的系统已只读方式mout上来。只读的目的是为了方式误写入造成的数据永久丢失。

命令格式如下:
#mount -t ext3 -o ro /dev/hdbx /mnt
其中x根据实际需要改变。

2.用string命令dump吧。
#strings /dev/sda7 > /path/to/big_text_file
最好找一个大点的分区,因为你不知道那个文件会有多大。我当时的文件是2GB。

另外提一下各文件系统对最大单文件大小的限制:
FAT32:4GB
NTFS:64GB
NTFS5.0:2TB
EXT2/EXT3/ReiserFS:1TB
JFS:不限

3.用合适的文本编辑器找吧。当然我也没有这么牛的机器能打开一个2GB的文本文件,公司分配的只是一台256MB内存的破电脑,还要分一些当显存用。于是把它分割成了20个每个100MB的文件。关闭X以及各种服务,用emacs打开,按关键字查询。用了将近3个小时,居然被我悉数找回。

emacs是NB的,100MB的文件居然在10s内打开,而且关键字搜寻也很快,只是在它自动保存的时候需要1~2min时间不能动。我开始的时候在windows下用轻便的editpus,结果那个时候一点都不轻便,没有一个动作能在2mins内做完的,打开一个文件更是需要5~6mins。

另外还有一些问题:
a.)一些以前保存过的老版本以文件碎片的形式干扰你的查找

b.)如果以”{”或者”}”作为单独一行,那么dump的时候会丢失。所以找回来的文件需要添加一些花括号,这也是挺郁闷的,但总比重新写好吧。

当然这种方法作用有限,只能恢复ASCII字符,对二进制文件无效,而且我也没有在里面找到中文字符。但是总得来讲对重要文件多家备份,防止误删才是应道理。所谓预防第一嘛。所以真希望这篇文章没有人需要。
【已有0位网友发表了看法】 【打印】 【关闭】

 我要评论
发表评论,与各位同人交流。
 热点主题
·促进中国Linux快速发展的主要因素
·linux中cat命令一解
·Red Hat Enterprise Linux 4 U5五光盘
·Mplayer 音量控制详解
·LINUX 的 ftp上传怎么解决?
·哪个linux适合新手学习?
·linux复习题综合练习
·精通Linux肯定是非常有前途的
·apache安装似乎失败了?
·ubuntu如何下载QQ
 最新主题
·linux下一个网卡设置多个ip
·/etc/profile 环境变量
·对于-bash: /bin/mv: Argument list
·几个简单的问题,向大家请教一下
·问下RED HAT下的终端窗口和开机时按"
·今天遇到一个怪事,关于PDF的
·请教高手有关命名管道(fifo):一个
·使用iGoogle查看红联最新贴
·Linux下crontab无法保存的问题
·Red Hat Enterprise Linux 4 U5五光盘
 关注热点

Linux紧张辩论
和全球近30万Linux爱好者热讨当今最热门的开源话题,寻找同城Linux人,发表你的见解...

· 最新主题与激烈辩论主题,5分钟前由系统自动更新!
· 24小时热点Top20与一周热点Top20主题,15分钟前由系统自动更新!

下载1000部免费Linux教程,参与Linux社区文档的建设...

各省Linux人:

北京 上海 天津 重庆 广东 湖北
四川 安徽 湖南 河北 江西 河南
陕西 山东 福建 江苏 浙江 山西
吉林 辽宁 广西 宁夏 甘肃 贵州
云南 新疆 西藏 青海 台湾 海南
香港 澳门 内蒙古 黑龙江

Linux精华文档 Linux同城人(交友)

全国大学校园Linux人

热门栏目推荐:Linux业界新闻

 
合作 | 关于我们 | 联系我们 | 导航 | 会员注册

©2010 红联 Powered by SupSite