前言
上次我们分析了EXT文件系统的恢复方式,借助于extundelete工具仅可以恢复EXT类型的文件,但无法恢复CentOS 7系统,因为centos7默认采用xfs类型的文件。
xfs文件系统恢复工具有以下几种:
-
xfsprogs:xfs文件系统扩展工具包,内置了xfs_repair工具,可以对文件系统进行修复和恢复。
-
TestDisk:流行的免费开源数据恢复工具,可以恢复已经丢失的分区和文件。
-
ddrescue:一个数据恢复工具,可以将损坏的设备复制到另一个设备,以最大程度地减少数据丢失。
当然XFS文件系统也内置了两个命令用来备份和恢复文件系统。
文章目录
- 前言
- 一. xfsdump与xfsrestore工具 介绍
- 二. xfs的用法介绍
- 2.1 xfsdump的使用
- 2.2 xfsrestore的使用
- 2.3 实验过程
- 2.3.1 加一块硬盘并分区
- 2.3.2 创建测试文件
- 2.3.3备份数据
- 2.3.4 查看备份信息
- 2.3.5 模拟删除并恢复
- 2.3.6 查看恢复结果
- 总结
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. xfsdump与xfsrestore工具 介绍
xfs类型的文件可使用xfsdump与xfsrestore工具进行备份恢复。若系统中未安装xfsdump与xfsrestore工具,可以通过yum install -y xfsdump命令安装
xfsdump是一个备份工具,可以备份xfs文件系统。xfsdump通过遍历文件系统的目录和元数据,将文件系统的内容写入备份文件。备份文件可以保存在磁盘或磁带上,并可以用xfsrestore命令来还原。
与大多数备份工具类似,xfsdump通过创建文件系统的快照并将其写入备份文件来备份文件系统。
在备份过程中,xfsdump将文件系统的数据按照文件系统层次结构复制到备份文件中。
在备份时,它会遍历所有的目录并重建所有的子目录,以及遍历所有的文件重新创建文件。
同时,xfsdump还会备份元数据,包括文件的inode、权限、日期和时间戳等。
xfsrestore是xfsdump的还原工具,xfsrestore可以从xfsdump备份文件恢复文件系统。
还原时,xfsrestore读取备份文件,并将它按照文件系统的层次结构还原到实际的文件系统中。
通过逐个读取备份文件中的目录和文件重建文件系统目录和文件。同时,它还会还原文件的元数据信息,包括修改时间、创建时间、inode编号等。
二. xfs的用法介绍
2.1 xfsdump的使用
xfsdump的备份级别有两种:0表示完全备份;1-9表示增量备份。默认为0。
xfsdump的常用参数:
xfsdump是一种用于备份XFS文件系统的工具,它有以下常用的参数:
-
-l level
:指定备份级别,可选值为0、1、2和3。级别越高,备份的数据越全面,但备份的时间和占用的存储空间也越多。 -
-f file
:指定备份文件的路径和名称。 -
-L label
:指定备份标签,可用于标识备份数据的用途或时间。 -
-p
:指示xfsdump备份前需要暂停(挂起)文件系统。 -
-v
:显示备份过程的详细信息。 -
-z
:启用gzip压缩备份数据,可以减少备份文件的大小。 -
-T
:指定备份数据的时间戳格式,可选值为posix
和iso8601
。 -
-M
:启用多卷备份模式,可以将备份数据分成多个文件存储,适合备份大型文件系统。 -
-N
:禁用压缩算法,可以提高备份和恢复的速度,但备份文件的大小会增加。 -
-E
:指定需要排除备份的文件或目录。 -
-I
:指定需要包含备份的文件或目录。 -
-i
:指定需要备份的inode号码。 -
-t
:使用tar格式输出备份数据。 -
-S
:启用sparse文件支持,可以减少备份文件的大小。 -
-c
:仅备份指定的文件或目录。
这里特意留个好评,这些参数是INSCODE AI生成的,超级好用
2.2 xfsrestore的使用
xfsretore的常用参数:
参数 | 介绍 |
---|---|
-f: | 指定要还原的备份文件路径,例如:xfsrestore -f /mnt/backup/backupfile |
-i: | 在交互模式下运行xfsrestore命令,这会提示用户输入特定的命令来恢复文件系统。 |
-t: | 显示备份存档中包含的文件和目录信息,但不执行实际的还原操作。可以使用此选项来查看备份包含的内容。 |
-s: | 仅还原制定的目录或文件,例如:xfsrestore -f /mnt/backup/backupfile -s /home/user/example |
-n: | 不执行还原操作。在测试备份文件是否可访问或查看备份文件中包含的内容时,可以使用此选项。 |
-v | 显示xfsrestore还原操作的详细输出,以方便用户监视进程和恢复的文件。 |
-p | 恢复文件权限。使用此选项后,xfsrestore会恢复文件的原始权限和所有权。 |
-L | 禁用调用ioctl操作。这个选项通常用于在Linux容器中可用的xfsrestore。 |
2.3 实验过程
2.3.1 加一块硬盘并分区
[root@mufeng41 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xd6de11e0 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@mufeng41 ~]#
## 格式化分区
[root@mufeng41 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@mufeng41 ~]# mkdir /tmp/sdb1
[root@mufeng41 ~]# mount /dev/sdb1 /tmp/sdb1
[root@mufeng41 ~]#
2.3.2 创建测试文件
[root@mufeng41 ~]# echo 1234 >> /tmp/sdb1/num.txt
[root@mufeng41 ~]# mkdir /tmp/sdb1/test
[root@mufeng41 ~]# echo "test" >> /tmp/sdb1/test/a.txt
[root@mufeng41 ~]# cp /etc/passwd /tmp/sdb1/test/
[root@mufeng41 ~]#
2.3.3备份数据
备份(定时每天备份,第二天误删除的时候可以恢复,如果无备份不能恢复)
root@mufeng41 ~]# mkdir /backup
[root@mufeng41 ~]# xfsdump -f /backup/dump_sdb1 /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
============================= dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1 ##指定备份会话标签
session label entered: "dump_sdb1"
--------------------------------- end dialog ---------------------------------
xfsdump: level 0 dump of mufeng41:/tmp/sdb1
xfsdump: dump date: Fri May 26 18:55:18 2023
xfsdump: session id: 1ac95b7d-eff2-4893-87f7-c06bcf75dd8f
xfsdump: session label: "dump_sdb1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 34368 bytes
xfsdump: /var/lib/xfsdump/inventory created
============================= media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 ## 设置设备标签
media label entered: "sdb1"
--------------------------------- end dialog ---------------------------------
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 27296 bytes
xfsdump: dump size (non-dir files) : 3680 bytes
xfsdump: dump complete: 19 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /backup/dump_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS
[root@mufeng41 ~]#
2.3.4 查看备份信息
Xfsdump -I
2.3.5 模拟删除并恢复
删除文件
[root@mufeng41 ~]# cd /tmp/sdb1/
[root@mufeng41 sdb1]# ls
num.txt test
[root@mufeng41 sdb1]# rm -rf ./*
[root@mufeng41 sdb1]# ls
[root@mufeng41 sdb1]#
恢复文件
[root@mufeng41 sdb1]# xfsrestore -f /backup/dump_sdb1 /tmp/sdb1
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: mufeng41
xfsrestore: mount point: /tmp/sdb1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Fri May 26 18:55:18 2023
xfsrestore: level: 0
xfsrestore: session label: "dump_sdb1"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 80e25d47-b7f8-4dad-94fa-df550b93b5ae
xfsrestore: session id: 1ac95b7d-eff2-4893-87f7-c06bcf75dd8f
xfsrestore: media id: 233974e1-6fad-4b0a-9b46-69092c568d99
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 2 directories and 4 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /backup/dump_sdb1 OK (success)
xfsrestore: Restore Status: SUCCESS
2.3.6 查看恢复结果
[root@mufeng41 sdb1]# cd /tmp/sdb1/
[root@mufeng41 sdb1]# ls
num.txt test
可以看到数据已经全部恢复。
总结
使用 xfsdump 时,请注意下面下面的几个限制:
1、xfsdump 不支持没有挂载的文件系统备份!所以只能备份已挂载的!
2、xfsdump 必须使用 root 的权限才能操作 (涉及文件系统的关系)
3、xfsdump 只能备份 XFS 文件系统
4、xfsdump备份下来的数据(档案或储存媒体)只能让 xfsrestore解析
5、xfsdump是透过文件系统的UUID来分辨各个备份档的,因些不能备份两个具有相同UUID的文件系统
💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 本文由沐风晓月原创,首发于CSDN博客, 博客主页:mufeng.blog.csdn.net
💕 日拱一卒无尽有,功不唐捐终入海
💕 喜欢的话记得点赞收藏哦