终于恢复了部分被删除的文件内容,贴出来共享一下
发表于:2007-06-09来源:作者:点击数:
标签:
在那片前辈文章的指引之下,我根据自己的情况,写了一个小程序,虽然由于恢复得太晚,部分内容已经没了,但是还是恢复了其中的差不多一半内容,也算是有所成就吧。 我有两个文件被误删,一个是bcm_ipmc.h,一个是bcm_ipmc.c,其中bcm_ipmc.h只有不到100行,b
在那片前辈文章的指引之下,我根据自己的情况,写了一个小程序,虽然由于恢复得太晚,部分内容已经没了,但是还是恢复了其中的差不多一半内容,也算是有所成就吧。
我有两个文件被误删,一个是bcm_ipmc.h,一个是bcm_ipmc.c,其中bcm_ipmc.h只有不到100行,bcm_ipmc.c有好几百行。他们存在于/dev/dsk/c0t1d0s7这个分区上,我记住了其中的好多关键字,反复搜索,终于恢复了bcm_ipmc.h的全部内容和bcm_ipmc.c的部分内容。
代码如下:#include <stdio.h>
#include <string.h>
int
main( void 

{
FILE *fp;
char buf[1024];
long i=0;
long j=0;
long k=0;
fp=fopen("/dev/dsk/c0t1d0s7","r"

;
while (!feof(fp))
{
fread(buf,1024,1,fp);
for( j=0;j<1002;j++ 

{
if( !memcmp( buf+j, "IgmpSnoopingProcReport", 22) 

{
printf("%ld",i);
for(k=0;k<1024;k++)
printf("%c",buf[k]);
}
}
i++;
}
fclose(fp);
return 0;
}
其中IgmpSnoopingProcReport是其中的一个关键字,我反复查询过好几个关键字。
另外,1024是块的长度,我后来把1024改成了更大的数字(1024的整数倍),比如40960,
改动之后,一次就把bcm_ipmc.h的内容全部找出来了。
如果不是删除之后很长时间才找到恢复的办法,而是一删除马上恢复的话,相信会把所有的内容都恢复。
twlogin 回复于:2002-07-18 14:19:30
|
佩服佩服
|
fengger 回复于:2002-07-18 14:26:10
|
惭愧惭愧,只怪我悟性太低,误删之后两天才想到这个办法,我们那么多人使用服务器,只能恢复了这么多,如果聪明一点,早点想出办法来的话,就不至于只恢复这么点了
|
韦小宝 回复于:2002-07-18 14:26:14
|
亲爱的,贵姓啊?我打算跟你姓了
|
fengger 回复于:2002-07-18 14:26:49
|
忘了补充一点,这个程序的运行必须root权限,否则会出错退出
|
ultra-guest 回复于:2002-07-18 14:29:27
|
祝贺你.有机会我也试验一下.
|
boycw 回复于:2002-07-18 15:46:32
|
放入精华区吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
朽木可雕 回复于:2002-07-18 15:48:46
|
高手啊,是我自己水平太低了,什么都看不懂
|
随意江湖行 回复于:2002-07-18 15:58:35
|
恭喜! 有机会我也试试!
|
jjm 回复于:2002-07-18 18:13:42
|
我有些看不太明白.
|
NTO 回复于:2002-08-06 09:41:45
|
大哥能告诉我怎么用这段程序吗?我的试验环境上怎么不能用啊?
|
fengger 回复于:2002-08-23 11:40:07
|
很简单,就是在solaris上面使用root编译运行就行了。其中的分区要换成你自己的分区,关键字换成你自己的关键字
|
procrus 回复于:2002-08-23 12:15:30
|
有机会一定试试,谢谢
|
triphop 回复于:2003-04-15 19:51:20
|
呵呵,我老早就有写个 unrm的程序的想法,但要获得具体硬盘的正确参数,并不那么容易,要对文件系统有很大的了解,同时我也认为还要读懂 fsck的代码.
呵呵.
不如 alias rm=mv ### 来的容易,简单.
个人迂腐之见!
|
原文转自:http://www.ltesting.net