文章目录
本篇讲解备份恢复EXT和XFS文件系统的工具,包括extundelete、xfsdump和xfsrestore三种工具的理论讲解和使用方法。另外有两个不同文件系统的实验案例。
备份恢复EXT文件系统
extundelete工具(命令)
extundelete
是一个用于恢复被删除的文件和目录的工具,专门用于 EXT3 和 EXT4 文件系统。通过读取文件系统的日志和元数据来恢复误删的文件,特别适用于还没有被覆盖的文件。
格式
extundelete [选项] [设备]
设备
:需要恢复的文件系统所在的设备(如/dev/sda1
)。
选项(参数)
-inode [inode_number]
:查看指定 i 节点(inode)对应的文件信息。-restore-file [文件路径]
:恢复指定的文件。-restore-inode [inode_number]
:通过 i 节点恢复文件。-restore-directory [目录路径]
:恢复指定目录及其所有内容。-restore-all
:恢复文件系统中所有被删除的文件。-output-dir [目录]
:指定恢复文件保存的目录,默认是当前目录下的RECOVERED_FILES/
目录。-after [日期]
:仅恢复在指定日期之后删除的文件。-before [日期]
:仅恢复在指定日期之前删除的文件。-log [日志文件]
:将恢复过程中的日志信息保存到指定的日志文件中。
示例
-
查看文件系统中存在的文件
显示
/dev/sda1
文件系统根目录下的文件信息。extundelete /dev/sda1 --inode 2
-
恢复指定文件
恢复
/dev/sda1
文件系统中的/home/user/document.txt
文件,并将恢复的文件保存在当前目录下的RECOVERED_FILES/
目录中。extundelete /dev/sda1 --restore-file /home/user/document.txt
-
恢复整个目录
这将恢复
/dev/sda1
文件系统中/home/user/documents
目录及其所有文件。extundelete /dev/sda1 --restore-directory /home/user/documents
-
恢复所有文件
尝试恢复
/dev/sda1
文件系统中所有被删除的文件。extundelete /dev/sda1 --restore-all
-
指定恢复文件保存的目录
把恢复的文件保存到
/mnt/recovered/
目录中。extundelete /dev/sda1 --restore-file /home/user/document.txt --output-dir /mnt/recovered/
注意事项
- 在执行恢复操作之前,尽量减少对文件系统的写操作,因为新的写入可能会覆盖已删除文件的存储空间,导致数据无法恢复。
- 恢复文件时,如果没有明确指定输出目录,恢复的文件会自动保存到当前目录的
RECOVERED_FILES/
目录中。
备份恢复XFS文件系统
xfsdump工具(命令)
简介
xfsdump
是用于备份 XFS 文件系统的工具,能够对 XFS 文件系统的整个分区或目录进行备份,并将备份数据存储到文件、设备或其他输出目标中。通常用于系统备份,以确保数据在灾难发生时能够恢复。
格式
xfsdump [选项] -f <备份文件> <目标文件系统或目录>
选项(和参数)
f <备份文件>
: 指定备份数据的输出目标,通常是一个文件或者设备路径。L <标签>
: 为此次备份指定一个标签,用于标识备份内容。M <媒体名>
: 指定备份媒体的名称。l <级别>
: 指定备份级别,0
为完全备份,1
或更高数字为增量备份。S
: 显示进度和统计信息。q
: 静默模式,不输出一般消息,只显示错误信息。v
: 详细模式,输出更详细的日志信息。
示例
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
此命令将 sdb1
分区的内容备份到文件 /opt/dump_sdb1
中,备份的标签为 dump_sdb1
,媒体名称为 sdb1
。
xfsrestore工具(命令)
简介
xfsrestore
是从由 xfsdump
创建的备份文件中恢复数据的工具。它能够将备份的 XFS 文件系统恢复到指定的目录或分区中,并还原文件的元数据和权限。
格式
xfsrestore [选项] -f <备份文件> <目标目录>
选项(和参数)
f <备份文件>
: 指定要恢复的备份文件路径。r
: 恢复整个备份,包括所有的文件和目录。s <会话ID>
: 恢复指定的备份会话。i
: 交互模式,可以选择性地恢复文件。v
: 详细模式,输出更详细的日志信息。q
: 静默模式,减少输出,只显示重要信息和错误。
示例
xfsrestore -f /opt/dump_sdb1 /data/
此命令将备份文件 /opt/dump_sdb1
中的内容恢复到 /data/
目录中,保留文件结构和权限信息。
案例1:恢复EXT类型的文件
extundelete
是一个用于恢复 ext3 和 ext4 文件系统中已删除文件的工具,特别适用于从误删除中恢复文件,通过编译安装之后可以用于恢复删除的文件。
注意:CentOS7只能使用此工具恢复ext3文件系统文件,否则有可能会报异常吐核。
步骤1:安装和编译 extundelete
(用于 ext4 文件恢复)
-
安装依赖:先安装基础依赖包;再安装下面。
e2fsprogs-devel
和e2fsprogs-libs
是 ext2/3/4 文件系统工具的开发库和支持库,是编译extundelete
所需的依赖包。yum -y install gcc* pcre* yum -y install e2fsprogs-devel e2fsprogs-libs
-
下载源码包:进入
/test
目录并使用wget
下载extundelete
的源码包。cd /test wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
-
解压源码包:使用
tar
解压.tar.bz2
压缩包。tar jxvf extundelete-0.2.4.tar.bz2
-
编译安装:进入解压后的目录,使用
./configure
进行配置,并指定安装路径为/usr/local/extundelete
。然后使用make
编译并安装extundelete
。cd extundelete-0.2.4/ ./configure --prefix=/usr/local/extundelete make && make install
-
创建符号链接:将
extundelete
的可执行文件链接到/usr/bin/
,以便在命令行中直接调用。ln -s /usr/local/extundelete/bin/* /usr/bin/
步骤2:创建和格式化分区
-
创建和格式化分区:使用
fdisk
对/dev/sdc1
进行分区操作,然后使用partprobe
刷新分区表。最后,使用mkfs.ext3
将分区格式化为 xfs 文件系统。fdisk /dev/sdc partprobe /dev/sdc mkfs.ext3 /dev/sdc1
步骤3:ext3 文件系统恢复
此步骤为在 ext3 文件系统中创建文件、模拟删除文件并使用 extundelete
工具进行恢复操作。
-
模拟创建文件
cd /ext3_data # 切换到 /ext3_data 目录 echo a>a # 创建一个名为 a 的文件,内容为 "a" echo a>b # 创建一个名为 b 的文件,内容为 "a" echo a>c # 创建一个名为 c 的文件,内容为 "a" echo a>d # 创建一个名为 d 的文件,内容为 "a" ls # 列出 /ext3_data 目录下的所有文件
解释:
- 切换到
/ext3_data
目录,使用echo
命令创建四个文件a
、b
、c
和d
,并注入内容 “a”。 - 最后一行
ls
命令用于验证文件是否成功创建。
- 切换到
-
查看文件系统中的文件
extundelete /dev/sdc1 --inode 2
解释:
extundelete
工具用于检查/dev/sdc1
文件系统中存在哪些文件。-inode 2
参数表示从 i 节点 2 开始查看(i 节点 2 通常是根目录)。
-
删除文件
rm -rf a b extundelete /dev/sdc1 --inode 2
解释:
- 使用
rm -rf a b
命令删除文件a
和b
。 - 再次使用
extundelete
检查文件系统,确认刚才删除的文件已经不存在。
- 使用
-
卸载并恢复文件系统
cd ~ # 切换到用户家目录 umount /ext3_data # 卸载 /ext3_data 挂载点 extundelete /dev/sdc1 --restore-all # 恢复 /dev/sdc1 文件系统下的所有内容
解释:
- 退回家目录后卸载
/ext3_data
挂载点。 - 使用
extundelete /dev/sdc1 --restore-all
命令恢复/dev/sdc1
文件系统中的所有已删除文件。恢复的文件将会保存在一个名为RECOVERED_FILES/
的目录中。 - 需要在分区未挂载的情况下进行,否则会报错。
- 退回家目录后卸载
-
检查恢复的文件
ls RECOVERED_FILES/ # 列出恢复的文件
解释:
- 使用
ls
命令列出RECOVERED_FILES/
目录中的内容,以验证哪些文件已成功恢复。
- 使用
案例2:恢复XFS类型的文件
xfsdump/xfsrestore 是 xfs 文件系统的备份和恢复工具,通过备份整个分区,可以在数据丢失的情况下进行恢复。
完整步骤:xfs 文件系统恢复
xfs 文件系统的创建、备份与恢复操作如下。
-
创建和格式化分区:使用
fdisk
对/dev/sdb
进行分区操作,然后使用partprobe
刷新分区表。最后,使用mkfs.xfs
将分区格式化为 xfs 文件系统。fdisk /dev/sdb partprobe /dev/sdb mkfs.xfs [-f] /dev/sdb1
-
挂载和准备测试数据:创建挂载点
/xfs_data
,并将/dev/sdb1
挂载到该目录下。然后复制/etc/passwd
文件,并在/xfs_data
目录下创建一个test
目录及其中的空文件a
。mkdir /xfs_data mount /dev/sdb1 /xfs_data/ cd /xfs_data cp /etc/passwd ./ mkdir test touch test/a
-
备份 xfs 文件系统:首先检查系统中是否已经安装了
xfsdump
,如果没有,则使用yum
安装它。xfsdump
用于备份整个 xfs 文件系统分区,这里将/dev/sdb1
备份到/opt/dump_sdb1
中。rpm -qa | grep xfsdump yum install -y xfsdump xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
解释:
xfsdump
: 用于备份 XFS 文件系统的工具。f /opt/dump_sdb1
: 指定备份文件存储路径为/opt/dump_sdb1
。/dev/sdb1
: 要备份的分区设备(sdb1
)。L dump_sdb1
: 为此次备份指定一个标签(label),这里标签为dump_sdb1
。M sdb1
: 为备份的媒体指定一个名字(sdb1
)。
-
模拟数据丢失:进入
/xfs_data
目录,并删除所有文件,模拟数据丢失的场景。cd /xfs_data/ rm -rf ./* ls
-
恢复数据:使用
xfsrestore
从之前的备份文件/opt/dump_sdb1
中恢复/xfs_data
目录下的文件。xfsrestore -f /opt/dump_sdb1 /xfs_data/
解释:
xfsrestore
: 用于从由xfsdump
创建的备份文件中恢复数据的工具。f /opt/dump_sdb1
: 指定要恢复的备份文件路径为/opt/dump_sdb1
。/xfs_data/
: 恢复数据的目标目录。这里表示将备份数据恢复到/xfs_data/
目录下。