一次有惊无险的数据恢复经历

Posted by 猪头小队长 | 简单生活 | Saturday 30 July 2005 17:40

今天上午,被smily缠着去给她装机器(HP的机器)。下面就是这次差点称之为“惨痛”的经历的流水帐。

虽然结局是喜剧,但是这过程真是不想再经历第二次,做什么事情的时候真的要小心谨慎。唉,教训啊!

[@more@]

今天上午,被smily缠着去给她装机器(HP的机器)。

先用移动硬盘备份邮件、重要文件、系统的配置信息、各种程序的配置信息…,备份工作一切顺利,备份完成后,smily提醒把移动硬盘拔下来吧,我说过一会儿。有点搞的是我的电脑里有一些(好像是4个)默认的USB分区存在,没在意。

光驱中放入系统盘(WinXP),重起。然后分区,忽然发现有两个硬盘,大小一样的都是80G,一个是xxxx,另外一个是xxxx on mbr,也没有很在意,以为与上面说的默认的USB分区有关,把所有的分区都删掉,一边删一边确认,然后创建分区,发现建的不对,再删除、创建…,忽然觉得不对,赶紧把移动硬盘拔下来,凡在另外一台机器上面,果然,上面的分区全没有了,也就是说刚才的备份,所有的备份、资料全没有了!!痛不欲生啊!smily的所有的东西:工作日志、资料等都在里面,其他的地方没有备份。原来移动硬盘和机箱里面的硬盘都是80G,我以前都是靠磁盘大小来确定是哪个硬盘的,Q_Q

痛,系统还是得装的,没准有什么软件可以恢复移动硬盘里面的东西,想起sun(孙志刚)有过比较丰富的数据恢复经历,于是给他打电话,说了我都干了什么:把移动硬盘上的两个分区删了,然后又创建了分区,然后又删了他问我数据在第几个分区上,我说第二个,他说有门。然后说在外面呢,等回去之后告诉我那个软件叫什么名字,现在记不清楚了。

小心翼翼的装了xp,装完系统,发现了比较好玩的事情,还是有那四个USB分区,分别是C盘,D盘,E盘,F盘。哈哈,真正的C盘现在是G盘。G盘就G盘吧,不怎么影响使用。:(,郁闷。装驱动,声卡不能驱动,smily说算了,不听声音也罢,可是装完显卡驱动之后,系统总是重起,不断报告显卡驱动程序不稳定,重新装了几个驱动都无济于事,再次郁闷!

换了系统盘(Win2k3+sp1),重新装系统,安装过程一切顺利,驱动安装顺利,诺顿也顺利。把病毒库更新。

系统算是装完了,赶紧回家上网,sun把那个软件的名字发给了我:Acronis RecoveryExpert,并告诉我有50M+,去网上搜索发现有好多下载,下载了一个,发现才2M的,安装之后,重起系统,启动软件,然后列出硬盘/分区,选择移动硬盘的那个硬盘,开始扫描,漫长的半个小时过后,惊喜地发现,我需要的那个分区找到了,看大小和卷标正是要找的那个!!!幸好数据是在第二个分区,第一个分区找不到了,可能是再次创建了分区把分区记录改写了。不幸的是:提示说这是demo版,不能commit operations,然后给了我一个sales地址。于是又和sun联系,他想办法把软件传给我。再次恢复,终于搞定。

长舒一口气,晚上和smily去看《七剑》,kiss sun,kiss Acronis RecoveryExpert!

羽泉终于出新专辑了:《三十》

Posted by 猪头小队长 | 简单生活 | Friday 29 July 2005 14:46

新专辑《三十》

  1. 辛弃疾
  2. 人间(Original版)
  3. 尘埃
  4. 求爱歌
  5. 玩偶之家
  6. 冬眠城市
  7. 人间(Melody版)
  8. 寂寞公路
  9. 哪一站
  10. 天下无贼(Live版)
  11. Has It
  12. 这样的夜我容易喝醉

羽泉官方网站:http://www.yuquan.com

新的专辑的风格似乎和以往有些变化,等待了两年之后才有的精彩,不知能带来什么样的感觉。

相关文章:
http://ent.sina.com.cn/s/m/f/yuq.html
http://fm974.ent.tom.com/1030/1092/200576-55853.html

[@more@]

晕乎乎

Posted by smily | 简单生活 | Wednesday 27 July 2005 14:08

今天是我上班的第14天。晕乎乎的,没什么具体的事情可以做。坐在我旁边的同事感冒了,结果我也被传染了,所以很不舒服。

上班的总体感觉没什么太大的变化,只是我需要重新来跟一群陌生人打交道,需要慢慢的熟悉一个陌生的环境。不知道我什么时候能够习惯。

从这周起,我每天早晨早起15分钟,做早饭,总觉得这样才有家的感觉,要不就是一个宿舍,呵呵。另外,让他每天吃我做的早饭,我也会很安心,否则一想到他每天不吃早饭,心里就很别扭。早饭很简单,煮点粥,煮两个鸡蛋,还有一个小咸菜,清清淡淡的,吃的很舒服。

好了,不多说,我要搭起精神来工作,努力工作,努力学习。

[@more@]

多服务器系统下服务器同步方法的总结

Posted by 猪头小队长 | 程序设计 | Wednesday 27 July 2005 10:12

在多服务器的服务系统中,常常需要配置多台(十几台甚至几十台)软件环境基本相同的服务器。

当这样的服务器群配置好后,后期的管理任务变得十分的繁重,一个小小的修改,例如修改一个JSP文件,那么需要将此修改同步到所有的服务器上面,这里总结(仅仅是总结,没有我的任何的创新,hehe)一下一般的做法。

[@more@]

首先,假设有这样一些服务器:Client,ServerA,ServerB,ServerC…。一般地,要同步所有服务器的某个(些)文件的时候,会首先同步一台服务器,然后,此台服务器将作为Client,在此服务器的上面实施对所有其他服务器的同步。

一、最愚蠢但直接的做法:登录每台服务器做相应的修改。毋庸置疑,这种做法有效但绝不可取。

二、使用scp。scp提供这样的语法:
scp localfile username@tohostname:/newfilename
scp username@tohostname:/remotefile /newlocalfile

这样,我们就可以在Client上面,依次执行命令:
scp /usr/local/program/index.jsp root@ServerA:/usr/local/program/index.jsp
scp /usr/local/program/index.jsp root@ServerB:/usr/local/program/index.jsp

这里,不爽的地方是,每次使用scp命令,都会让你输入对方服务器对应用户的口令。这样,这些机械
化的动作就不能通过shell来自动的完成,那么配置服务器直接互相信任,既可以解决此问题:
配置的方法是(下面是一次完整的操作记录):

[root@Client root]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
51:ba:6d:5a:61:52:1d:79:e2:4f:0e:93:d0:72:02:fe root@Client
[root@Client root]#
[root@Client root]# scp /root/.ssh/id_rsa.pub ServerA:/root/.ssh/authorized_keys
The authenticity of host '210.192.125.55 (210.192.125.55)' can't be established.
RSA key fingerprint is e9:8e:f3:59:80:08:e7:9b:b8:d8:fb:0e:79:8a:d2:4f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '210.192.125.55' (RSA) to the list of known hosts.
root@210.192.125.55's password:

id_rsa.pub
100% |************************************************|
223 00:00
[root@Client root]#
[root@Client root]# ssh ServerA
Last login: Mon Jul 25 16:55:28 2005 from Client
[root@ServerA root]#

在你的实际操作中,将Client,ServerA换成你实际的IP或者主机地址。这样,再运行对ServerA的ssh或者scp的时候,ServerA都不会让你输入密码了。(具体的原理这里就不说了,参看问后的参考文章)

这样,在对所有的服务器都做了这个操作之后,我们就可以偷懒了,在Client上面编写一个Shell就可以通过这个简单的Shell来同步所有的服务器了。

[root@Client root]# vi sync.sh
#/bin/sh
scp /usr/local/program/index.jsp root@ServerA:/usr/local/program/index.jsp
scp /usr/local/program/index.jsp root@ServerB:/usr/local/program/index.jsp
scp /usr/local/program/index.jsp root@ServerC:/usr/local/program/index.jsp

保存
[root@Client root]# chmod +x sync.sh
[root@Client root]#./sync.sh

敲入上面的字符后,你就可以出去溜达一下,等着回来看同步结果了。

三、使用sftp。有的时候,要同步一个文件就可以了,而有的时候,需要同步一大堆的文件,这样使用scp就有点不那么方便了,这时候
使用sftp, sftp提供这样的语法:
sftp username@tohostname

使用sftp登录到Server上面之后,就可以通过put、get、cd、lcd等命令了。例如要同步下面这些文件:
[root@Client root]#sftp ServerA
Last login: Mon Jul 25 17:23:31 2005 from Client
[root@ServerA root]#cd /usr/local/program/
[root@ServerA root]#lcd /usr/local/program/
[root@ServerA root]#put *.jsp
….这里是一砣上传记录
[root@ServerA root]#cd /usr/local/program/conf/
[root@ServerA root]#lcd /usr/local/program/conf/
[root@ServerA root]#put server.conf
….这里是一砣上传记录
….

然后,你可以做一大堆的操作,sftp可以通过将命令实现写好,放到一个文件里面,像批处理(DOS时代学会的觉得比较高级的玩意儿)的那样执行。
[root@ServerA root]#vi sftp_comms.txt
cd /usr/local/program/
lcd /usr/local/program/
put *.jsp
cd /usr/local/program/conf/
lcd /usr/local/program/conf/
put server.conf

exit

保存
[root@ServerA root]#sftp -b sftp_comms.txt ServerA

这时候,如果你没有做(二)中提到的设置两台Server互相信任的操作,这里将会提示你输入ServerA的root密码,否则,这里也是不需要输入密码的。
利用sftp,也可以编写一个Shell:
[root@Client root]# vi sftp_sync.sh
#/bin/sh
sftp -b sftp_comms.txt ServerA
sftp -b sftp_comms.txt ServerB
sftp -b sftp_comms.txt ServerC

保存
[root@Client root]# chmod +x sftp_sync.sh
[root@Client root]#./sftp_sync.sh

敲入上面的字符后,你又可以出去溜达一下,等着回来看同步结果了。:)。

这样做还有一个好处是所有的同步的细节都写在 sftp_comms.txt里面,每次同步不同的东西,只要修改这个文件就可以了,当然,用scp的方法,你也可以用参数将需要同步的文件名传进shell里面,不过这样做略显复杂。如果喜欢挑战的话,你可以试一下。

参考文章
0.同事郑涛的指点
1.http://www.linuxforum.net/doc/ossh-wu.html
2.http://www.linuxforum.net/docnew/showthreaded.php?Cat=&Board=sys&Number=99
3.http://www.douzhe.com/docs/linux/RHEL3_U2/rhel-sag-zh_cn-3/s1-openssh-client-config.html

用正则表达式实现一个稍微复杂的字符串替换功能

Posted by 猪头小队长 | 程序设计 | Tuesday 26 July 2005 09:49

要求将"a &&& b &&&&& c"变为"a (&&&) b (&&&&&) c"

实现代码如下:

public static void main(String[] args) {

String str = "a &&& b &&&&& c";
String regex = "&+";

Pattern pattern = Pattern.compile(regex);
Matcher match = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (match.find())
match.appendReplacement(sb, "(" + match.group() + ")");

match.appendTail(sb);
System.out.println(sb.toString());
}

这是前些时候在紫丁香Java版回答别人的一个问题,在整理版面的时候发现了这个,顺手贴在这里,:)

[@more@]

又是一年七二幺

Posted by 猪头小队长 | 简单生活 | Thursday 21 July 2005 09:15

又是一年的7月21日了,去年的7月21日是来公司的第一天,转眼一年就过去了,嗖嗖的快呀!

一年来,经历了好多,学到了好多!

看看2004-07-21的日志:

2004-07-21
熟悉部分文档、安装机器系统
使用com.verye.nad.framework.util.MailUtil发送email(使用velocity)

呵呵,有意思。

[@more@]

今天搬家了

Posted by 猪头小队长 | 简单生活 | Sunday 17 July 2005 01:05

今天搬家了,确切的说是昨天,因为现在已经凌晨1点多了,刚刚和一起搬家的哥们吃完饭,回到这个小家,外面虽然还是有些吵,不过心里还是很舒服,:)

就写这么多了,现在该睡觉了,一会儿早晨起来还要买一些日用品去,:)

[@more@]

震撼!前所未有的震撼!!!

Posted by 猪头小队长 | 胡言乱语 | Thursday 14 July 2005 17:42

早就知道Google很强,在一些很泛的领域上能够后来居上,出奇制胜。早就知道Google正在做Google Earth,早就知道Google Earth可以搜索的很精细,画质很清晰,早就知道搜索出来的街道建筑可以是三维的,看起来很眩!

然而当这一刻来临的时候,还是被深深的震撼了!甚至是前所未有的震撼!!!

[@more@]

昨晚,凤凰卫视。画面重复着Google Earth的一个搜索画面:画面精细到能够看清一艘航母上面的飞机跑道,主持人们在讨论高科技与隐私,对此话题我并不感兴趣,同屋的兄弟和我说起这个搜索,我淡淡的一说:仅仅是一个Demo而已。

今天,忽然想看看Google Earth现在做怎么样了,于是上去看了一下,有客户端下载,下载,安装,运行。一个看起来不是那么顺眼的灰呼呼界面,让我怀疑它是用java写的。

随便在搜索框输入了一个"beijing",回车,结下来奇迹就出现了,脑海里面的那个《全民公敌》的经典镜头在眼前重演了,一个蓝绿相间的地球在转动、慢慢的搜寻目标、定位目标、画面变化速度加快、画面放大、画面很模糊、能看到模糊的街道、画面停止、画面开始变得清晰、画面完全显现出来了!用鼠标拨弄着画面,放大、缩小、平移…,能够看得清二环路、三环路、四环路!看看能否看到天安门?画面移动到天安门的位置、放大,当画面再次清晰的时候,我看见了天安门、长安街、人民英雄纪念碑….甚至长安街上的公共汽车…!我惊呆了!震撼了!感动了!

忽然一种强烈的久违的感动和震撼涌上眼睛和心头,几近热泪盈眶!找不到什么确切的言语来形容这种震撼,在我的记忆里,能够带给我震撼的东西越来越少了,尤其是一个软件或者说一个软件产品,接触计算机已经7年有余,这种震撼也许还是第一次。感觉自己像一个计算机盲在用着一个下个世纪才能出现的软件一样震撼!哦,原来是可以这样的,原来速度可以这么快,原来可以看得这么清晰,只有好莱坞大片才能出现的东西,真实在眼前上演!就是这样的一种震撼!迫不及待的把这个东西推荐给周围的同事。

我用的是free的版本,还有付费的版本,据说可以真正的看到三维的建筑,我没有这个眼福了。搜索纽约(new york),可以看到更多的信息,学校、饭店..等等。建筑和街道比北京更加的清晰和明显!

国内的地图搜索,用的最多的是go2map(现在已经被sohu收购了),那时候对go2map的感觉就是:慢!奇慢!真tmd慢!现在国内玩搜索的据说可以和Google竞争的是baidu,然而,看了这个之后,觉得他们技术力量应该不再一个数量级上,也许baiduGoogle竞争的并不在技术力量上,而在于baidu更具有“中国特色”!

稍微冷静下来,他用的是三年前的卫星图片,不是对所有的地方都可以这么搜索,他可以有优秀的服务器和网络来支撑这样的计算,画面的效果做的比较好,我对这方面的东西一无所知等等,我试着用这些原因来解释我的震撼。然而即使是有了这些解释,震撼虽然稍有缓解,依然还是震撼。

Google是为了创造神话而诞生的,他一路走来,创造了一个又一个神话,在人们尤其是搞技术的人们的眼中,Google是神秘的、渴望而不可及的,他就是那么一个神话。(也许在搞money的人的眼中,Google更加的神奇,呵呵)

null+”#str”会有NullPointerException吗?

Posted by 猪头小队长 | 程序设计 | Thursday 14 July 2005 10:08

昨天犯了一个错误,以为任何对null的使用都会有异常,例如:

String a = null;
String b = a + "#str";
System.out.println(b);

在我的印象里,String b = a + "#str"这行应该会出现NullPointerException,然而事实却不是这样,结果null#str。

我们都知道,字符串操作符’+'可以对任何的对象、基本数据类型作’+',在操作之前会把所有的参数都转成String类型。

那么是如何把其他类型转成String类型的呢,应该是通过String.valueOf()方法。

那么,上面的结果就应该是String.valueOf(Object)的杰作:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}

他对null做了特殊的处理,我能想象的出这样做的好处,再说valueOf是String的一个方法他就是要把null的东西转成"null"也是无可非议的。但是当在字符串相加的操作上面,使用了此方法之后,程序的结果就有点让人迷惑了。

[@more@]

FTerm的拷贝时候的乱码问题

Posted by 猪头小队长 | 胡言乱语 | Tuesday 12 July 2005 10:40

在经过CTerm、STerm、FTerm争雄的时代过后,FTerm渐显强势,逐渐被更多的人使用。

有这样一个问题,在使用fterm的时候,用鼠标选择屏幕上的一段文字,粘贴到其它的地方,例如写字板,是乱码的。fterm版本是2.5.0.127

在FTerm的官方网站(http://fterm.zj001.net)的论坛上没有找到这个问题的答案,在紫丁香(http://bbs.hit.edu.cn),Asciiman(http://bbs.hit.edu.cn/bbsqry.php?userid=asciiman)搞定了这个问题:在拷贝的时候打开中文输入法。

因为这个问题,我差点抛弃FTerm,继续转向STerm,给FTerm的开发者写过mail,但是收到的是退信。也许他已经再那么关心FTerm了。

[@more@]

Next Page »