超强实用!利用xfsdump和xfsrestore打造无懈可击的数据备份与恢复策略

前言

上次我们分析了EXT文件系统的恢复方式,借助于extundelete工具仅可以恢复EXT类型的文件,但无法恢复CentOS 7系统,因为centos7默认采用xfs类型的文件。

xfs文件系统恢复工具有以下几种:

  • xfsprogs:xfs文件系统扩展工具包,内置了xfs_repair工具,可以对文件系统进行修复和恢复。

  • TestDisk:流行的免费开源数据恢复工具,可以恢复已经丢失的分区和文件。

  • ddrescue:一个数据恢复工具,可以将损坏的设备复制到另一个设备,以最大程度地减少数据丢失。

当然XFS文件系统也内置了两个命令用来备份和恢复文件系统。

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是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文件系统的工具,它有以下常用的参数:

  1. -l level:指定备份级别,可选值为0、1、2和3。级别越高,备份的数据越全面,但备份的时间和占用的存储空间也越多。

  2. -f file:指定备份文件的路径和名称。

  3. -L label:指定备份标签,可用于标识备份数据的用途或时间。

  4. -p:指示xfsdump备份前需要暂停(挂起)文件系统。

  5. -v:显示备份过程的详细信息。

  6. -z:启用gzip压缩备份数据,可以减少备份文件的大小。

  7. -T:指定备份数据的时间戳格式,可选值为posixiso8601

  8. -M:启用多卷备份模式,可以将备份数据分成多个文件存储,适合备份大型文件系统。

  9. -N:禁用压缩算法,可以提高备份和恢复的速度,但备份文件的大小会增加。

  10. -E:指定需要排除备份的文件或目录。

  11. -I:指定需要包含备份的文件或目录。

  12. -i:指定需要备份的inode号码。

  13. -t:使用tar格式输出备份数据。

  14. -S:启用sparse文件支持,可以减少备份文件的大小。

  15. -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
💕 日拱一卒无尽有,功不唐捐终入海
💕 喜欢的话记得点赞收藏哦

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值