案例:恢复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软件包的目录
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
配置,编译及安装
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目录下
2,解压extundelete软件到/opt下
tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
3,编译要用gcc,gcc-c++工具编辑,为安装工具方便我们可以先自己配置一个yum仓库(之前文章中也有详细过程)
1)先切换到/etc/yum.repos.d/配置文件目录下,将原来的配置文件做一个备份
2)创建一个新的abc.repo的配置文件,输入相应的配置信息
4,切换到/opt/extundelete目录中,用yum安装编译工具,配置源码进行编译和安装
1)切换到软件包目录中并安装gcc,gcc-c++工具
2)配置,编译,编译后安装
[root@localhost extundelete-0.2.4]# yum install gcc gcc-c++ -y 安装编译工具 ...
[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 编译后进行安装
(二)模拟恢复并执行恢复操作
1,添加一个/dev/sdb新磁盘做模拟实验使用,创建磁盘分区/dev/sdb1,格式化并挂载到Linux上
1)添加一个sdb磁盘,创建分区
2)格式化sdb1并挂载到Linux上可以使用
[root@localhost extundelete-0.2.4]# fdisk /dev/sdb 创建/devsdb分区
[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
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恢复文件
3,在家目录中就可以找到一个recovered_files目录,被删除的文件就在此目录下,你可以直接复制到原来的磁盘中,完成恢复文件
案例:恢复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
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 保存退出
[root@localhost ~]# mkfs.xfs /dev/sdb1 格式化 [root@localhost ~]# mkdir data 创建挂载点 [root@localhost ~]# mount /dev/sdb1 /data 挂载
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
[root@localhost data]# xfsdump -f /opt/xfs_dump /dev/sdb1 用xfsdump命令对/dev/sdb1磁盘备份文件到/opt/xfs_dump下
(二)模拟删除并执行恢复操作
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/ 进行文件恢复
现实生活中使用文件恢复,和对文件做备份是一个很重要的事情,保证数据的可靠安全不丢失
谢谢阅读!!!