我有两个文件被误删,一个是bcm_ipmc.h,一个是bcm_ipmc.c,其中bcm_ipmc.h只有不到100行,bcm_ipmc.c有好几百行。他们存在于/dev/dsk/c0t1d0s7这个分区上,我记住了其中的好多关键字,反复搜索,终于恢复了bcm_ipmc.h的全部内容和bcm_ipmc.c的部分内容。
代码如下:#include ;
#include ;
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的内容全部找出来了。
Linux下数据误删除不再是恐怖的事情,ext3grep帮你恢复
e2fsprogs
10个G的数据被误删除了,差点崩溃,试遍了所有常规恢复软件,无用,就要放弃的时候,发现了ext3grep这个开源东东!
顺利恢复所有数据,所以linux下数据删除并不可怕,可怕的是删除后没有恢复的方法,看看下面的操作吧!
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
其实什么版本的系统无所谓 !
所需的相关库
[root@localhost ~]# rpm -qa |grep e2fsprogs
e2fsprogs-libs-1.39-8.el5
e2fsprogs-1.39-8.el5
e2fsprogs-devel-1.39-8.el5
必须要有e2fsprogs-libs,不然在后面ext3grep的安装会有问题。
分区情况:
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.2G 1.8G 4.2G 30% /
/dev/sda1 99M 11M 83M 12% /boot
/dev/mapper/VolGroup00-LogVol02
1008M 34M 924M 4% /data
tmpfs 125M 0 125M 0% /dev/shm
需要软件
先下载软件
[root@localhost ~]# cd /root/src/
[root@localhost src]# wget src
[root@localhost src]# ls
ext3grep-0.6.0.tar.gz
[root@localhost src]# tar xfvz ext3grep-0.6.0.tar.gz
[root@localhost ext3grep-0.6.0]# ./configure
[root@localhost ext3grep-0.6.0]# make install
[root@localhost ext3grep-0.6.0]# ext3grep
Running ext3grep version 0.6.0
编译然后测试可以使用了,一切做好了以后开始我们的恢复过程。
我的目录是/data分区,我先格式化了分区,我放一个文件在根目录下和一个子目录下的文件。
/dev/mapper/VolGroup00-LogVol02 1008M 34M 924M 4% /data
下面斜体部分不是必须的:
其实这里用什么分区倒是无所谓,也可以模拟一个出来,下面是模拟步骤:
1. mkdir /data1/
2. cd /data1/
3. dd if=/dev/zero of=disk1 count=2048000
4. mkfs.ext3 disk1
5. mkdir -p /dfs/a
6. mount -o loop /data1/disk1 /dfs/a
这里,我们用/data分区,先拷贝些文件过去
[root@localhost ~]# ]# cp /bin/ls /data/
[root@localhost ~]# ]# cp -rf /bin /data/
[root@localhost ~]# ]# ls -la /data/
total 136
drwxr-xr-x 4 root root 4096 Apr 21 17:37 .
drwxr-xr-x 25 root root 4096 Apr 21 17:11 ..
drwxr-xr-x 2 root root 4096 Apr 21 17:37 bin
drwx—— 2 root root 16384 Apr 21 17:15 lost+found
-rwxr-xr-x 1 root root 93560 Apr 21 17:37 ls
[root@localhost ~]#
一个子目录一个可执行文件
现在删除ls文件和bin下面的zcat
[root@localhost ~]# rm /data/ls
rm: remove regular file `/data/ls’? y
[root@localhost ~]# rm /data/bin/zcat
rm: remove regular file `/data/bin/zcat’? y
[root@localhost ~]# ls -la /data/ls /data/bin/zcat
ls: /data/ls: No such file or directory
ls: /data/bin/zcat: No such file or directory
文件没有了然后我们来恢复:
首先必须umount掉误删除数据的分区:
[root@localhost ~]# umount /dev/mapper/VolGroup00-LogVol02
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.2G 1.8G 4.2G 30% /
/dev/sda1 99M 11M 83M 12% /boot
tmpfs 125M 0 125M 0% /dev/shm
确认卸载,然后使用ext3grep来恢复。
[root@localhost ~]# ext3grep /dev/mapper/VolGroup00-LogVol02 --ls --inode 2
这里会创建扫描分区
[root@localhost ~]# ext3grep /dev/mapper/VolGroup00-LogVol02 --ls --inode 2
[root@localhost ~]# ext3grep /dev/mapper/VolGroup00-LogVol02 --restore-file ls
Running ext3grep version 0.6.0
WARNING: I don’t know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 8
Minimum / maximum journal block: 585 / 8787
Loading journal descriptors… sorting… done
Number of descriptors in journal: 58; min / max sequence numbers: 2 / 5
Loading VolGroup00-LogVol02.ext3grep.stage2… done
Restoring ls
[root@localhost ~]# ext3grep /dev/mapper/VolGroup00-LogVol02 --restore-file bin/ls
Running ext3grep version 0.6.0
WARNING: I don’t know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 8
Minimum / maximum journal block: 585 / 8787
Loading journal descriptors… sorting… done
Number of descriptors in journal: 58; min / max sequence numbers: 2 / 5
Loading VolGroup00-LogVol02.ext3grep.stage2… done
Restoring bin/ls
[root@localhost ~]# ls -la RESTORED_FILES/
total 124
drwxr-xr-x 3 root root 4096 Apr 21 18:01 .
drwxr-x— 5 root root 4096 Apr 21 17:55 ..
-rwxr-xr-x 1 root root 93560 Apr 21 17:48 ls
[root@localhost ~]# ext3grep /dev/mapper/VolGroup00-LogVol02 --restore-file bin/zcat
Running ext3grep version 0.6.0
WARNING: I don’t know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 8
Minimum / maximum journal block: 585 / 8787
Loading journal descriptors… sorting… done
Number of descriptors in journal: 58; min / max sequence numbers: 2 / 5
Loading VolGroup00-LogVol02.ext3grep.stage2… done
Restoring bin/zcat
[root@localhost ~]# ls -la RESTORED_FILES/bin/
total 188
drwxr-xr-x 2 root root 4096 Apr 21 18:01 .
drwxr-xr-x 3 root root 4096 Apr 21 18:01 ..
-rwxr-xr-x 1 root root 62136 Apr 21 17:48 zcat
看看都恢复在RESTORED_FILES目录下,大小也一样,这里RESTORED_FILES目录是执行ext3grep的当前目录下!
也可以使用:
ext3grep /termite/cc-disk --restore-all
恢复所有文件和目录,但是目录的话,如果删除时间较长,不一定能完全恢复,压缩文件一般都能恢复。
如果想详细的了解ext3grep,可以到它的的HOW TO页去看看:
~carlo17/howto/undelete_ext3.html
阅读(6625) | 评论(0) | 转发(0) |