案例:恢复EXT4类型的文件(Redhat6版本中)

删除一个文件,实际上并不清除 inode 节点和 block 的数据,只是在这个文件的父目录 里面的 block 中,删除这个文件的名字。Linux 是通过 Link 的数量来控制文件删除的,只 有当一个文件不存在任何 Link 的时候,这个文件才会被删除。

(一)编译安装extundelete软件包

安装依赖包

  • e2fsprogs-devel -1.41.12-18.el6.x86_64.rpm

  • e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm

1,将镜像文件挂载到Linux的/mnt目录下,并切换到/mnt/packges软件包的目录

微信截图_20190828005605.png

2,安装e2fsprogs依赖包

1)先安装e2fsprogs-libs

2)再安装e2fsgrops-level之前需要安装一个依赖包libcom_err-devel

3)最后安装e2fsgrops-level即可

[root@localhost ~]# rpm -ivh e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm  安装e2fsprogs-libs

[root@localhost ~]# rpm -ivh libcom_err-devel-1.41.12-18.el6.x86_64.rpm  安装e2fsgrops-level之前需要安装一个依赖包libcom_err-devel

[root@localhost ~]# rpm -ivh e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm  最后安装e2fsgrops-leve

微信截图_20190828005418.png

配置,编译及安装

  • extundelete-0.2.4.tar.bz2

1,利用远程共享将你的extundelete软件包挂载到本地/abc目录下(之前的文章中有具体的远程共享挂载操作)

[root@localhost yum.repos.d]# smbclient -L //192.168.100.99/  远程共享访问

[root@localhost yum.repos.d]# mount.cifs //192.168.100.99/extundelete /abc   将共享的文件挂载到本地创建的/abc目录下

微信截图_20190828005418.png

微信截图_20190828005605.png

2,解压extundelete软件到/opt下

tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/

微信截图_20190828112912.png

3,编译要用gcc,gcc-c++工具编辑,为安装工具方便我们可以先自己配置一个yum仓库(之前文章中也有详细过程)

1)先切换到/etc/yum.repos.d/配置文件目录下,将原来的配置文件做一个备份

2)创建一个新的abc.repo的配置文件,输入相应的配置信息

微信截图_20190828114737.png

微信截图_20190828114823.png

微信截图_20190828115046.png

4,切换到/opt/extundelete目录中,用yum安装编译工具,配置源码进行编译和安装

1)切换到软件包目录中并安装gcc,gcc-c++工具

2)配置,编译,编译后安装

[root@localhost extundelete-0.2.4]# yum install gcc gcc-c++ -y  安装编译工具
...

微信截图_20190828120334.png

[root@localhost extundelete-0.2.4]#  ./configure 配置源码
Configuring extundelete 0.2.4
Writing generated files to disk
[root@localhost extundelete-0.2.4]# make  对源码进行编译
make -s all-recursive
Making all in src
extundelete.cc:571: 警告:未使用的参数‘flags’
[root@localhost extundelete-0.2.4]# make install  编译后进行安装

微信截图_20190828115046.png

(二)模拟恢复并执行恢复操作

1,添加一个/dev/sdb新磁盘做模拟实验使用,创建磁盘分区/dev/sdb1,格式化并挂载到Linux上

1)添加一个sdb磁盘,创建分区

2)格式化sdb1并挂载到Linux上可以使用

[root@localhost extundelete-0.2.4]# fdisk /dev/sdb  创建/devsdb分区

微信截图_20190828120922.png

微信截图_20190828121128.png

[root@localhost extundelete-0.2.4]# mkfs -t ext4 /dev/sdb1  格式化磁盘
...
[root@localhost extundelete-0.2.4]# mkdir /data     创建挂载点,并将/dev/sdb1挂载到/data下
[root@localhost extundelete-0.2.4]# mount /dev/sdb1 /data

微信截图_20190828122522.png

微信截图_20190828122747.png

2,切换到/data目录在里面创建三个a,b,c文件,删除a文件并立即解挂载,使用extundelete恢复文件

1)在/data目录下创建三个文件,并删除一个文件

2)立即解挂载,并做文件恢复

[root@localhost extundelete-0.2.4]# cd /data   
[root@localhost data]# echo a>a
[root@localhost data]# echo a>b     切换到/data目录并创建三个文件
[root@localhost data]# echo a>c
[root@localhost data]# rm -rf /data/a   删除其中一个文件

[root@localhost data]# cd ~       解挂载
[root@localhost ~]# umount /data
[root@localhost ~]# extundelete /dev/sdb1 --restore-all   使用extundelete恢复文件

微信截图_20190828130858.png

3,在家目录中就可以找到一个recovered_files目录,被删除的文件就在此目录下,你可以直接复制到原来的磁盘中,完成恢复文件

微信截图_20190828131007.png


案例:恢复XFS类型的文件(Centos7版本中)

xfsdump命令格式

  • xfsdump -f 备份存放位置 要备份的路径或设备文件

xfsdump备份级别(默认为0)

  • 0:完全备份

  • 1-9:增量备份

xfsdump常用选项:-f,-L,-M,-s

xfsrestore命令格式:

  • xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

(一)安装xfsdump,xfsrestore软件工具,并进行备份

1,确认xfsdump,xfsrestore软件是否安装,没有安装可以使用yum install安装

[root@localhost ~]# rpm -q xfsdump
xfsdump-3.1.4-1.el7.x86_64
[root@localhost ~]# yum install xfsdump -y

微信截图_20190828130858.png

2,创建模拟新的磁盘分区,格式化并挂载

[root@localhost ~]# fdisk /dev/sdb   创建分区
命令(输入 m 获取帮助):n  新建
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p    主分区
分区号 (1-4,默认 1):     分区号
起始 扇区 (2048-41943039,默认为 2048):   起始扇区
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):    结束扇区
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w   保存退出

微信截图_20190828130858.png

[root@localhost ~]# mkfs.xfs /dev/sdb1   格式化
[root@localhost ~]# mkdir data      创建挂载点
[root@localhost ~]# mount /dev/sdb1 /data     挂载

微信截图_20190828131007.png

3,在/data目录下创建几个文件和目录,使用xfsdump对/dev/sdb1做一个备份文件到/opt/xfs_dump下

[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd ./      在/data目录中创建几个文件和目录
[root@localhost data]# mkdir test
[root@localhost data]# touch test/a01.txt
[root@localhost data]# ls
passwd  test

微信截图_20190828130858.png

[root@localhost data]# xfsdump -f /opt/xfs_dump /dev/sdb1   用xfsdump命令对/dev/sdb1磁盘备份文件到/opt/xfs_dump下

微信截图_20190828131007.png

(二)模拟删除并执行恢复操作

1)删除/data下的所有文件

2)使用xfsrestore恢复文件

3)查看备份文件即可完成恢复

[root@localhost data]# rm -rf /data/*   删除/data下所有文件
[root@localhost data]# ls
[root@localhost data]# xfsrestore -f /opt/xfs_dump /data/   进行文件恢复

微信截图_20190828140255.png

微信截图_20190828140322.png


现实生活中使用文件恢复,和对文件做备份是一个很重要的事情,保证数据的可靠安全不丢失

谢谢阅读!!!