客户意外rm掉了数据文件,导致数据库无法打开,由于没有完整的备份和归档,需要使用别的方法,而客户又关闭了数据库,导致无法使用文件描述符恢复,就要使用linux上别的方法了,现记录使用extundelete来恢复丢失的文件
[root@server119 ~]# cd /db
[root@server119 db]# ll
总计 32
drwxrwxr-x 2 oracle oinstall 16384 2011-05-06 lost+found
-rwxr-xr-x 3 oracle oinstall 21096 08-02 18:05 odu
drwxrwxr-x 7 oracle oinstall 4096 2011-05-06 oracle10g
[root@server119 db]# rm -rf odu
[root@server119 db]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 39G 26G 12G 70% /
/dev/sda10 331G 312G 2.3G 100% /opt
/dev/sda9 20G 175M 19G 1% /tmp
/dev/sda8 20G 439M 18G 3% /var
/dev/sda7 20G 11G 8.3G 56% /home
/dev/sda6 20G 1.7G 17G 9% /vol
/dev/sda2 331G 310G 4.1G 99% /db
/dev/sda1 2.0G 42M 1.8G 3% /boot
tmpfs 16G 0 16G 0% /dev/shm
/dev/sdb1 929G 709G 173G 81% /db2
/dev/sdb2 905G 622G 238G 73% /opt2
192.168.0.121:/nfs7 1.1T 621G 391G 62% /dbbak2
[root@server119 extundelete-0.2.0]# mount -n -r -o remount /db
最好尽快将所在分区修改为只读方式,防止数据被覆盖使用。
[root@server119 /]# cd root
[root@server119 ~]# ll
-rw-r–r– 1 root root 97851 08-31 12:10 extundelete-0.2.0.tar.bz2
这里上传一个工具主要用于ext3文件系统,ext4没有测试过。
[root@server119 ~]# tar xjvf extundelete-0.2.0.tar.bz2
extundelete-0.2.0/
extundelete-0.2.0/README
extundelete-0.2.0/acinclude.m4
extundelete-0.2.0/configure.ac
extundelete-0.2.0/aclocal.m4
……
安装extundelete工具
root@server119 ~]# cd extundelete-0.2.0
[root@server119 extundelete-0.2.0]# ls
acinclude.m4 autogen.sh config.h.in configure.ac install-sh Makefile.am missing src
aclocal.m4 compile configure depcomp LICENSE Makefile.in README
[root@server119 extundelete-0.2.0]# ./configure
Configuring extundelete 0.2.0
Writing generated files to disk
[root@server119 extundelete-0.2.0]# make
make -s all-recursive
Making all in src
[root@server119 extundelete-0.2.0]# make install
Making install in src
/usr/bin/install -c ‘extundelete’ ‘/usr/local/bin/extundelete’
使用extundelete进行rm文件或者文件夹的恢复
[root@server119 extundelete-0.2.0]# extundelete /dev/sda2 –restore-all
Loading filesystem metadata … 2236 groups loaded.
Loading journal descriptors … 30441 descriptors loaded.
Writing output to directory RECOVERED_FILES/
此时可以将、dev/sda2分区的被删除但是还没有被重用的block恢复,而如果block已经被重用了,此种方法不行了,而后会在当前目录下创建一个RECOVERD_FILES的目录,目录下就是extundelete恢复的文件或者文件夹(个人尝试恢复文件夹,发现恢复的文件夹存在部分文件丢失,无法恢复,可能是block被重用导致)。
[root@server119 extundelete-0.2.0]# ll RECOVERED_FILES/
总计 16
-rwxr-xr-x 2 root root 21096 08-31 14:53 odu
已经成功恢复
来自 <http://blog.163.com/scott_guo/blog/static/1810260832012913113728302/>
以上方式,仅适用于超级快没有损坏的情况,在suer-block损坏后,用fsck修复会擦掉记录的信息,这会导致extundelete无法扫出任何可恢复的文件,也就是说,如果你恢复时报super-block的错误的话,基本上是找不回来了
原文地址:http://suifu.blog.51cto.com/9167728/1671292