> CentOS > CentOS入门 >

centos6.5下使用extundelete恢复ext4、ext3、ext2分区删除的数据

     背景介绍:  公司一开始用win7做共享文件服务器,后来经常出现用户连接共享盘时提示 “连接数已满”的提示,所以我用CentOS6.5  架设了一台Samba 文件共享服务器,自开始使用到现在运行良好,没有出现任何问题。 在此赞一下linux的稳定性能 centos6.5下使用extundelete恢复ext4、ext3、ext2分区删除的数据。 - 明天的阳光 - 明天的阳光  
      我们所有人为了工作方便是通过映射网络驱动器的形式使用工作盘上的文件,非常方便。今天早上一名员工的电脑出现问题,误操作把Samba文件服务器一个目录中的所有图片删除了,大概有一百多张。这些图片文件都是一些文件的影印照,丢失对工作不利,必须得把所有的文件恢复过来。 
  通过GOOGLE和百度,发现可以通过debugfs 命令找回丢失的文件 点击此处了解更多信息
 但此方法操作困难,恢复一个文件就需要使用多条命令,而我丢失的文件数目很多,工作量太大。 
再次google后发现可以使用 extundelete 软件恢复丢失的文件。 点击此处查看源文
  此文已经写的很详细了,我就不再重复,直接写一个简版的操作说明及注意事项,以及我要使用软件过程中的心得体会。 
   软件下载地址:  地址1:国外源码地址     址址2:百度网盘   
   若都不能下载请@我重新发布下载地址。 
1、意外丢失数据后要第一时间暂停磁盘的写操作,不往磁盘上写任何数据,这一点很重要。 

mount -rw -n -o remount /ywbdisk/

2、安装软件的过程很简单,直接下载所需要的e2fsprogs-devel 软件并编译即可没什么好讲的。
3、使用extundelete 查看丢失数据磁盘的目录分布情况。  通常一个磁盘挂载到目录后的INODE号是2,可以通过先查看这个再确定丢失的目录 ,下图中右面带有Deleted标志的目录都是存在删除文件记录或者是已经被删除过的目录 。你可以从中找到需要恢复的目录 。

	

[root@localhost src]# ./extundelete /dev/sdb1 --inode 2 NOTICE: Extended attributes are not restored. WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set. The partition should be unmounted to undelete any files without further data loss. If the partition is not currently mounted, this message indicates it was improperly unmounted, and you should run fsck before continuing. If you decide to continue, extundelete may overwrite some of the deleted files and make recovering those files impossible. You should unmount the file system and check it with fsck before using extundelete. Would you like to continue? (y/n) y Loading filesystem metadata ... 1118 groups loaded. Group: 0 Contents of inode 2: 0000 | ed 41 f4 01 00 10 00 00 a6 fd 5a 54 a5 fd 5a 54 | .A........ZT..ZT 0010 | a5 fd 5a 54 00 00 00 00 f4 01 12 00 08 00 00 00 | ..ZT............ 0020 | 00 00 00 00 dd 00 00 00 21 24 00 00 00 00 00 00 | ........!$...... 0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 0080 | 1c 00 00 00 d4 11 68 72 d4 11 68 72 ac c5 ae 77 | ......hr..hr...w 0090 | 7f e3 c4 53 00 00 00 00 00 00 00 00 00 00 00 00 | ...S............ 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Inode is Allocated File mode: 16877 Low 16 bits of Owner Uid: 500 Size in bytes: 4096 Access time: 1415249318 Creation time: 1415249317 Modification time: 1415249317 Deletion Time: 0 Low 16 bits of Group Id: 500 Links count: 18 Blocks count: 8 File flags: 0 File version (for NFS): 0 File ACL: 0 Directory ACL: 0 Fragment address: 0 Direct blocks: 9249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 Indirect block: 0 Double indirect block: 0 Triple indirect block: 0 File name | Inode number | Deleted status . 2 .. 2 lost+found 11 .deleted 6815745 运维人员常用工具&常用表格 3670017 3FE9F600 12 Deleted hardware.sh 19 Deleted 出故障单电子版 5505025 各版本操作系统OS 2097153 临时中转 8519681 试验数据库 4325377 数据库种子--最新 2883585 新建文件夹 8388609 Deleted 精简WIN7-64位.GHO 17 Deleted 垃圾清理.bat 18 Deleted 视频.avi 19 Deleted 学习资料.txt 20 Deleted 直通内网.bat 23

4、找到丢失的目录后就可以直接使用extundelete 恢复删除过的目录和文件。 
    例如,我需要恢复的文件都在 出故障单电子版目录中,那么我的操作就是。

extundelete /dev/sdb1 --restore-directory 出故障单电子版

命令之行成功后可到当前目录下的 RECOVERED_FILES 下找回恢复过来的文件。 至此文件恢复完成。在执行这一步操作时一定要注意 --restore-directory  后面跟的目录不像别人所说的绝对路径,而是相对路径,即位于/dev/sdb1  磁盘上的路径,我刚开始输的是绝对路径,结果导致一直报错。绝对的教训啊。 
下面是extundelete 参数介绍,大神们就不要笑话我了,小鸟们可以看看。 
Usage:  ./extundelete  [option]  [--] device-file
Options:  
      --Version, -[vV]    显示出extundelete软件的版本号 

	

[root@localhost src]# ./extundelete --v extundelete version 0.2.4 libext2fs version 1.41.12 Processor is little endian.

--superblock 显示指定磁盘的超级块信息,此选项为隐含选项,默认使用此选项。
-j journal     显示卷标。
-b blocknumber     当系统默认的超级块损坏时,请使用此选项使用备用超级块扫描磁盘。  备用超级块的查看方法可可以通过mkfs命令获取。 
 -B blocksize    当打开文件系统时不使用默认的块大小 而是使用指定的块大小。 
 --log 0                Make the program silent.使程序沉默?  我也不明白什么意思。 
 --inode ino       显示指定indode值的丢失文件目录信息。 如前文所示的那样。 
--after dtime      恢复指定时间点之后删除的文件。
--before dtime   恢复指定时间点之前删除的文件。  
          这个时间点不能是普通的时间,而是经过date计算过的时间值。  例如 

	

[root@BIGDATA src]# date -d "2014-11-06 15:40:00" +%s 1415259600

使用此值可以选择在此时间点之前或者是此时间点之后的交易。 
--restore-inode ino   使用指定的inode值进行恢复。 
  --restore-file 'path'     指定需要恢复的文件,path值是从当前磁盘开始,不需要从根分区开始。 
--restore-files 'path'    恢复多个文件时需要指定恢复的文件列表。
--restore-directory 'path'   指定需要恢复目录的路径,不需要从根开始,直接从当前需要恢复数据的磁盘开始。 
--restore-all         恢复指定磁盘的所有文件。 
-o directory          恢复的文件输出的目录,默认是程序目录下的RECOVERED_FILES目录下,也可以单独指定。
(责任编辑:IT)