Linu下误删文件恢复

ps: 红字字体为重要部分, 仔细看

当意识到误删除文件后,切忌千万不要再频繁写入了,否则你的数据恢复的数量将会很少。 而我们要做的是,第一时间把服务器上的服务全部停掉,直接killall 进程名 或者 kill -9 pid 。 然后把误删除文件所在分区,重新挂载成ro,只读的 (mount  -o ro  /dev/sdb2  /data/)。

一、 利用系统工具debugfs恢复误删除文件

        1. 首先创建一个目录及文件;

[root@Centos1 ~]# mkdir ceshi
[root@Centos1 ~]# echo 111 > ceshi/1.txt


        2. 删除ceshi目录下的所有文件;

[root@Centos1 ~]# rm -rf ceshi/*


        3. 利用系统自带还原工具debugfs来修复;

[root@Centos1 ~]# debugfs
debugfs 1.41.12 (17-May-2010)
debugfs:  open /dev/mapper/VolGroup-lv_root


        4. 用ls -d参数显示刚刚删除文件的所在目录;

debugfs:  ls -d /root/ceshi/
 144661  (12) .    128522  (4084) ..   <128531> (4072) 1.txt


        5. 显示<>尖括号的就是我们要找的文件inode号;

debugfs:  logdump -i <131458>


        6. 执行完后, 显示了一屏信息, 我们需要的是这一行, 并且记住后面的值(即标注红色部分);

    Blocks:  (0+1): 127754 (2+1): 1768711539 (3+1): 7894382 (TIND): 1953724787


        7. 退出debugfs, 执行以下命令;

debugfs:  q
[root@Centos1 ~]# dd if=/dev/mapper/VolGroup-lv_root of=/root/ceshi/1.txt.bak bs=4096 count=1 skip=30
#     if=输入的设备
#     of=输出的社保
#     bs=指定一个block的大小
#     count=多少个block需要dump
#     skip=   Blocks:  (0+1):后的值


        8. 查看/root/ceshi/目录下是否生成1.txt.bak文件;

[root@Centos1 ~]# cat /root/ceshi/1.txt.bak
111


二、利用extundelete恢复误删文件

        1. 利用yum安装依赖包;

[root@Centos1 ~]# yum -y install e2fsprogs*
[root@Centos1 ~]# yum -y install gcc*                    #extundelete编译时需要gcc环境


        2. 下载并安装extundelete;

[root@Centos1 ~]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2


        3. 解包、配置、编译及安装;

[root@Centos1 ~]# tar -jxvf extundelete-0.2.4.tar.bz2
[root@Centos1 ~]# cd extundelete-0.2.4
[root@Centos1 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete      
[root@Centos1 extundelete-0.2.4]# make && make install


        4. 检验是否安装成功;

[root@Centos1 extundelete-0.2.4]# cd /usr/local/extundelete/bin
[root@Centos1 bin]# ./extundelete -v
extundelete version 0.2.4
libext2fs version 1.41.12
Processor is little endian.


        5. 扫描LVM分区误删的文件;

[root@Centos1 bin]# /usr/local/extundelete/bin/extundelete /dev/mapper/VolGroup-lv_root --inode 2

   

        6. 恢复aaa.txt文件;

[root@Centos1 bin]# /usr/local/extundelete/bin/extundelete --restore-file aaaa.txt /dev/mapper/VolGroup-lv_root 
[root@Centos1 bin]# /usr/local/extundelete/bin/extundelete  --restore-all /dev/sdb2          #恢复分区


        7. 查看恢复文件;

[root@Centos1 bin]# ls -l RECOVERED_FILES/     
恢复后的文件也是在   ./RECOVERED_FILES/  下,能否恢复就看你的运气好不好了。


你可能感兴趣的:(linux,文件恢复,误删)