首页 > 代码库 > Linux-Rhel6 恢复误删文件

Linux-Rhel6 恢复误删文件

 

需要工具extundelete(可通过xshell上传下载到linux)

知识点:

ifconifig eth0             查看ip

fdisk /dev/sda          管理磁盘

mkfs.ext4 /dev/sda4         格式化sda4分区为ext4的文件系统分区

mount /dev/cdrom /mnt/        挂载光驱

umount /dev/cdrom        卸载光驱

df -Th                查看挂载信息

echo $?                返回上个命令是否成功

ls !$                查看上个命令的参数

ls *2fs*            过滤查看文件

tar -jxvf ??.tar.bz2           解压文件  -j 解压bzip2类型 -x 解压 -v 详细信息 -f 指定文件名

rpm -ivh ??.rpm            安装 -i 安装 -v详情信息 -h带单位

uname -m            查看操作系统位数

diff 1.txt 2.txt        比较文件

md5sum 1.txt 2.txt        比较文件

configure            检测

make                编译

make install            安装

extundelete /dev/??? --inode 2  查看可恢复文件

extundelete /dev/??? --restore-[inode/file/directory/all] 恢复文件


准备工作

[root@demon-rhel6 ~]#mount /dev/cdrom /mnt/      ###挂载光盘到mnt目录下
  
[root@demon-rhel6 ~]# fdisk /dev/sda             ###fdsik 为磁盘管理器

Command (m for help):p                           ### ‘p‘ 查看已划分好的分区

Command (m for help):n                 ###‘n‘ 创建新分区

Command action
    e  extended  #扩展分区
    p  primary partition(1-4) #主分区
p                                                ### ‘p‘ 选择创建主分区

First cylinder (1428-2610, default 1428):        ###选择从哪里开始分区,‘enter‘选择默认

Last cylinder, +cylinders or +size{K,M,G} (1428
 - 2610,default:2610) : +1G                     ###选择分区的大小或末位置,‘+1G‘ 分出1G


Command (m for help):w                 ### ‘w‘ 保存分区设置

[root@demon-rhel6 ~]#reboot                      ###重启后生效

[root@demon-rhel6 ~]#mkdir /tmp/sda4             ###为新分区创建挂载点

[root@demon-rhel6 ~]#mkfs.ext4 /dev/sda4     ###格式化sda4分区为ext4的文件系统分区

[root@demon-rhel6 ~]#mount /dev/sda4 /tmp/sda4   ###挂载sda4分区

[root@demon-rhel6 ~]#df -Th                      ###查看挂载信息 -T显示系统文件 -h显示大小单位

[root@demon-rhel6 ~]#echo $?              ###查看命令是否执行成功

[root@demon-rhel6 ~]#cd /tmp/sda4                ###进入sda4分区



删除文件

以下为制造被删除的文件操作

[root@demon-rhel6 sda4]##cp /etc/passwd /tmp/sda4     ###拷贝文件到sda4

[root@demon-rhel6 sda4]##touch /tmp/sda4/a.txt          ###创建文件

[root@demon-rhel6 sda4]##vim /tmp/sda4/a.txt          ###编辑文件

[root@demon-rhel6 sda4]##mkdir -p /aa/bb/cc           ###创建目录 -p创建父目录

[root@demon-rhel6 sda4]##cp /tmp/sda4/a.txt /tmp/sda4/aa/

[root@demon-rhel6 sda4]##cp /tmp/sda4/a.txt /tmp/sda4/aa/bb

开始删除

[root@demon-rhel6 sda4]##ls /tmp/sda4/                   ###查看有哪些文件

[root@demon-rhel6 sda4]##mkdir /tmp/back           ###创建备份夹

[root@demon-rhel6 sda4]##mkdir /tmp/sda4/* /tmp/back/      ###备份
  
[root@demon-rhel6 sda4]##ls !$                        ###‘!$‘表示上次命令最后一个参数也就是/tmp/back

[root@demon-rhel6 sda4]##rm -rf passwd a a.txt                ###删除文件

注意:lost+found暂不明确其作用,先别删除


安装工具

被删除后的文件之所以能被恢复是因为,文件在硬盘中的数据还在只不过名字被删除了而已
但是如果有别的数据区覆盖也就是新添加了一些其他文件那么则恢复不了,为了避免被覆盖
被删除后的第一时间要卸载分区

[root@demon-rhel6 sda4]#cd                                 ###退出分区

[root@demon-rhel6 ~]#umount /dev/sda4                      ###卸载sda4

注意如果不退出分区,则无法卸载该分区----站在桥上不可拆桥

umount: /tmp/sda4: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))


[root@demon-rhel6 ~]#tar -jxvf soft/extundelete-0.2.4.tar.bz2  ###解压  -j 解压bzip2类型 -x 解压 -v 详细信息 -f 指定文件名

[root@demon-rhel6 soft]# cd extundelete-0.2.4

[root@demon-rhel6 extundelete-0.2.4]# ls                      ###可以看到有configure的文件

[root@demon-rhel6 extundelete-0.2.4]# configure               ###检查环境

configure: error: Can‘t find ext2fs library                   ///缺少ext2fs环境库

[root@demon-rhel6 extundelete-0.2.4]# cd /mnt/Packages/           ###打开光碟的安装包下载环境

[root@demon-rhel6 Packages]# ls ext2fs                   ###没找到
ls: 无法访问ext2fs: 没有那个文件或目录

[root@demon-rhel6 Packages]# ls *2fs*                   ###缩小范围查找类似

[root@demon-rhel6 Packages]# uname -m                   ###查看操作系统位数

[root@demon-rhel6 Packages]#rpm -ivh e2fsprogs-libs-1.41.12-12.el6.x86_64.rpm              ###安装 -i 安装 -v详情信息 -h带单位

warning: e2fsprogs-libs-1.41.12-12.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
    package e2fsprogs-libs-1.41.12-12.el6.x86_64 is already installed

//上面报错表示已有该环境了,这是侯只是缺少了相关的开发工具devel 而不是libs

[root@demon-rhel6 Packages]#rpm -ivh e2fsprogs-devel-1.41.12-12.el6.x86_64.rpm

安装完后返回之前的文件夹

[root@demon-rhel6 Packages]#cd  -

[root@demon-rhel6 extundelete-0.2.4]# ./configure         ##检查安装环境

[root@demon-rhel6 extundelete-0.2.4]#  make          ##编译

[root@demon-rhel6 extundelete-0.2.4]#  make install       ##安装


开始恢复

[root@demon-rhel6 extundelete-0.2.4]# cd ~/test

[root@demon-rhel6 test]# extundelete /dev/sda4 --inode 2

File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
lookd.bat                                         12             Deleted
sleep.vbs                                         13             Deleted
variable.txt                                      14             Deleted
hosts                                             15             Deleted
a.txt                                             16             Deleted
aa                          8193           Deleted

[root@demon-rhel6 test]# extundelete /dev/sda4 --restore-inode 12          ##恢复lookd.bat到当前目录

[root@demon-rhel6 test]# diff RECOVERED_FILES/file.12 /tmp/back/lookd.bat  ##对比备份文件是否一致

[root@demon-rhel6 test]# extundelete /dev/sda4 --restore-filenames hosts   ##以文件名恢复

[root@demon-rhel6 test]# extundelete /dev/sda4 --restore-directory         ##以目录恢复

[root@demon-rhel6 test]# extundelete /dev/sda4 --restore-all            ##恢复全部

Linux-Rhel6 恢复误删文件