谁说误删Ext3下的文件一定找不回

发布于: 2007年10月31日

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接。

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

rm *.php

查了一下,这两周以来居然没有任何版本的备份。连忙拔下电源插座,以防任何数据写入该区域,那可就万劫不复了。
拆下硬盘,请公司IT部的朋友帮忙恢复。他在windows下用一些忙活了半天,结果是能恢复一些文件,但是没有一个是我要的。更气人的是,那些软件大都有按文件后缀名查询恢复的功能,但是没有一个支持php为后缀的,包括大名鼎鼎的easyrecover。
既然别人帮不上忙,那只能靠自己了。一阵google之后得出两个结论:
1.中文的内容都告诉我,ext2可以恢复,其他没戏。各个技术网站都重复转载着同一篇操作复杂的技术文章。各技术论坛里面关于数据恢复主题的更弥漫着一种悲观的气氛,通常都有这样的回复:“楼主节哀”,并且从技术角度告诉我种种不可恢复的理由。
2.英文内容好些,有一些专用的恢复软件,号称可以恢复ext3文件系统的文件,尝试了各种Demo版软件(大都可查找,不可恢复),找都找不到。我想那些软件也许对ext2有效,而对ext3可能只是一个营销手段吧。

就在我正打算重写这两个星期以来的代码的时候。在一个英文论坛的帖子里面找到了通往我的救星的一个链接,
他在这里:
http://www.csummers.org/index.php/2005/12/20/undelete-text-files-on-linux-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字符,对二进制文件无效,而且我也没有在里面找到中文字符。但是总得来讲对重要文件多家备份,防止误删才是应道理。所谓预防第一嘛。所以真希望这篇文章没有人需要。

永远会给你带来惊喜的深圳861公交

发布于: 2007年08月16日

一个月前换工作来到了深圳龙岗. 对于我们打工仔来说,最先遇到的就是公交车了. 让我比较意外的是,在这个房价1W+的地方,还有这样的公交车–861路,让我甚感”惊喜”.

861路公交是一趟无人售票,无人报站,根本无站,招手即停,吼声便下的jp公交.但是今天我想说的不是这些,而是他的公交路线.基本上他的路线是龙岗中心医院出发,经过南联路口,直走到比亚迪,再往回走一段拐到宝龙工业城,最后到一个我没有去过的终点站.

而我以及MM经过的前N趟中没有两趟的路线是一样的. 欲知详情,且听我娓娓道来.

Time 1: 初来龙岗,HR GG告诉我们需要转861即可到达.于是偶和MM便上了这趟车. 虽然对”无人售票,无人报站,根本无站,招手即停,吼声便下”的情况有点焦虑,但是更为意外的是车子到一个十字路口之后,等了一会儿,司机唧咕说了几个字,随即几个人下车,接着车子居然掉头远路返回了. 让偶大惊失色啊,难道司机要把偶们卖了?但是环顾四周,看到其他人面无表情,也就故作镇定.幸好也是有惊无险,安全到达.事后才知道路的那头是比亚迪,可能司机嫌十字路口繁忙就不去了.

下面几次要说的是一个P型路线的N种走法. P的左上点是南联路口,绕过P的圆弧然后知道到一个商业街,最后左拐到中心医院终点站.

Time 2:第二次我们和几个同事一起出去吃饭. 上了唯一的交通工具861,到南联路口之后,同事介绍说,车子会走一个P型路线,然后到我们的目的地(商业街). 结果话音未落,车子已经右转,P型路线显然被无视了. 而车上没有一个人有异议.看来大家都习惯了…

Time 3: 我和MM两个人单独出去.事实证明再未充分了解861之前,这是一个很大的错误. 虽然我们对P型路线的走法有一定的了解,但是我们还是低估861了. 车子来到南联路口,没有直接右拐,P型已经形成. 绕完圆弧,在一个很多人下车的热闹地方一起下车. 然后我们直走,寻找之前来过的地方. 结果走啊,走啊,…..走啊…..走啊….咦!回到南联路口了. 相当郁闷,悻悻而回. 事后经过详细分析,我发现车子的圆弧绕大了,直接到了中心医院,然后绕回.P型变成了D型

Time 4: 终于走了我们陌生的标准P型路线

Time 5,6,7:圆弧大小不一的P型.

由于861的存在,逼地我对深圳龙岗地区的地形异常了解,以不至于迷路. 而861一如既往地给我带来一次一次地”惊喜”. 在这个优胜劣汰的新社会,适者生存的道理就连公交车都能给我们诠释得淋漓尽致.

一个特别的日子,给特别的公交车:2007-8-16

不再自由的网络,不再赚钱的虚拟机提供商

发布于: 2007年08月14日

chinaunix上看到这则新闻,让人相当的郁闷,原文如下:

今日,广东将开始暂停办理发放新的互联网接入服务(ISP)经营许可证。这是自全国网站备案信息核查工作开展以来实行的最为严格的措施。这将影响到新网站的开办和注册。

  目前,除了对SP(增值服务提供商)以外,信息产业部对于互联网站的管理力度也不断加强。信产部于7月底公告称,互联网网站主办者如果不履行网站备案手续,将责令关闭,同时信产部还将加大互联网接入服务市场清理整顿力度。

  北京、天津、上海和河南等省市也将陆续实行暂停发放ISP许可证的措施。这些省市正在开展网站备案信息核查试点工作,信产部将在此基础上,在全国开展网站备案信息核查工作。

  在网站备案信息核查工作开展期间,通信管理部门将暂停办理发放新的互联网接入服务经营许可证。对于互联网接入服务提供者,将严格执行“网站先备案后接入”的原则。

  另外,信产部要求互联网接入服务提供者应具有因特网接入服务业务(ISP)或因特网数据中心业务(IDC)经营许可资质,建立业务管理系统、备案信息数据库和备案管理“专人专岗”制度。否则,基础运营商应将停止为其提供电信网络传输服务,通信管理部门将予以清理监督。

2003年的时候,当所有校园bbs一夜之间变成”优秀的校内交流平台”的时候, 从未想到还有今天. 也许统治者的某根神经在不停的被触动着,才会把全世界最大的局域网搞成如此这般的状况.

老大说:如果你无力反抗,那么你就享受吧.所以即便这样,我还想幸灾乐祸一下.

幸灾乐祸之一: 中国的中小型虚拟机提供商,能撤赶紧撤吧,把能卷的钱卷走先.手上的机器能卖就卖了吧,在手上越待越不值钱. 否则就等死吧,不是客户不关照你,关照你的客户都关起来了.

幸灾乐祸之二: 幸好我的服务器在国外. 当初贪的就是不用申请ICP牌照,想不到赚的还不止一点点. 要不然,我也被归入其他人的幸灾乐祸行列了.

自己动手做绿色版gimp(for windows)

发布于: 2007年08月09日

公司电脑权限太小,处理一个图片都很费劲。装了一个gimp2.2,结果提示找不到gtk+库,可是我有装gtk+库呀,只是你找不到而已–那些windows的path目录没有权限写嘛,所以放在其他地方了。

google了一下找到一个博客有解决方法的介绍,抄袭过来,以备后查:

原文地址:http://fengnz.blogspot.com/2007/05/gimp-windows.html

gtk 虽然是个公用库,但并不需要安装后才能使用,从别的机器上复制过来的也是一样可以用的,只要把bin目录加到path环境变量就可以了。

gimp 就通过path就能找到gtk,而不用搜索注册表,但是安装的时候gimp还是会找注册表,看是你否有装gtk,没装的话是不让安装gimp的,所以,gimp你也需要从别的机器上复制过来。

有了gtk,和gimp的文件夹,我们就可以运行gimp了,gtk和gimp都不向系统目录或其它目录加文件。

要让gimp正常运行,你得告诉它你gtk bin目录的位置和gimp的bin 目录的地址,你可以设置在path,环境变量里,也可以在cmd里设置临时变量。

gimp 本身会把所有的用户文件放在用户的文件夹里如 c:\documents and setting\abc\
下。我们想放在其它地方的话可以用欺骗的方式。把 userprofile 这个变量里存着的路径改掉就行了。废话不说了,把下面的代码复制到记事本,再存成bat 批处理文件(存在gimp的bin目录下)。然后双击就可以运行Gimp了。其中 E:\gre\graph\GIMP-2.0\bin;e:\enviroment\gtk\2.0\bin 改为你硬盘上gtk和gimp的bin的位置
e:\soody 随你改在什么地方,gimp将用e:\soody作为用户文件存放位置,去掉那行将默认存在 如c:\documents and setting\abc\

set path=%path%;E:\gre\graph\GIMP-2.0\bin;e:\enviroment\gtk\2.0\bin
set userprofile=e:\soody

rem – set englisgh as the lanuage of gimp
set LANG=zh-en

start gimp-2.2
exit

关于80年代人的经典总结

发布于: 2007年07月22日

网上看到的总结,作者未知,但是总结的相当实在,初读一遍感慨万千。
但是回头想想这都是外部因素,国家是需要改变的,平头百姓要么适应,要么出局,不需要抱怨。原文如下:

咱80后的人,可怜的一代人
当我们读小学的时候,读大学不要钱;
当我们读大学的时候,读小学不要钱;
我们还没能工作的时候,工作也是分配的
我们可以工作的时候,撞得头破血流才勉强找份饿不死人的工作做
当我们不能挣钱的时候,房子是分配的.
当我们能挣钱的时候,却发现房子已经买不起了
当我们没有进入股市的时候,傻瓜都在赚钱;
当我们兴冲冲地闯进去的时候,才发现自己成了傻瓜

浙ICP备18056264号-1