- 恢复的工具:extundelete(无法恢复空文件)
- 恢复的原理:
在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区;
如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区link指针-1,实际文件还储存在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统在创建新文件时重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天。所以!以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据成功的比例。
- 案例:
[root@localhost ~]# fdisk /dev/sdb ##分区为sdb1
[root@localhost ~]# partx -a /dev/sdb
[root@localhost ~]# mkfs -t ext4 /dev/sdb1
[root@localhost ~]# mkdir /benet
[root@localhost ~]# mount /dev/sdb1 /benet
[root@localhost ~]# df -hT
[root@localhost ~]# touch /benet/1.file
[root@localhost ~]# cp /etc/fstab /benet
[root@localhost ~]# cp /etc/inittab /benet
[root@localhost ~]# echo "haha" >>/benet/haha.txt
[root@localhost ~]# ls /benet
1.file fstab inittab haha.txt
[root@localhost ~]# rm -rf /benet/*
[root@localhost ~]# ls /benet
[root@localhost ~]# umount /benet
[root@localhost ~]# yum -y install *2fs*
[root@localhost ~]# tar jxvf extundelete-0.2.4.tar.bz2
[root@localhost ~]# cd extundelete-0.2.4
[root@localhost extundelete-0.2.4]#./configure
[root@localhost extundelete-0.2.4]# make
[root@localhost extundelete-0.2.4]# make install
[root@localhost extundelete-0.2.4]# cd
[root@localhost ~]# extundelete /dev/sdb1 --inode 2 ##查看可以恢复的文件
[root@localhost ~]# extundelete /dev/sdb1 --restore-all ##恢复所有文件
[root@localhost ~]# ls RECOVERED_FILES/ ##验证恢复的文件
1.file fstab haha inittab
extundelete命令其他语法:
extundelete /dev/sdb1 --restore-file 文件名 ##恢复单个文件,只指定文件名,不指定文件的任何路径
extundelete /dev/sdb1 --restore-directory 目录名 ##恢复目录