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

news2024/11/27 23:31:38

前言

上次我们分析了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文件系统的工具,它有以下常用的参数:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTB MonitorsTwo

MonitorsTwo HTB MonitorsTwo 老规矩信息收集了: NMAP信息收集 ┌──(kali㉿kali)-[~/桌面] └─$ sudo nmap --min-rate 1000 10.10.11.211 Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-19 09:18 CST Nmap scan report for 10.10.11.211 Host is up…

Python入门(十六)函数(四)

函数(四) 1.传递列表1.1 在函数中修改列表 2.传递任意数量的实参2.1 结合使用位置实参和任意数量实参2.2 使用任意数量的关键字实参 作者:Xiou 1.传递列表 我们经常会发现,向函数传递列表很有用,其中包含的可能是名字…

设计模式-模板方法模式

模板方法模式 问题背景解决方案:模板方法模式基本介绍解决问题代码示例运行结果 钩子方法注意事项和细节 问题背景 豆浆的制作: 1)制作豆浆的流程:选材—>添加配料—>浸泡—>放到豆浆机打碎 2)通过添加不同…

高可用性和双机热备浅析

在用户眼里,业务需要永远正常对外提供服务,这就要求应用系统的高可用(High availability,即 HA)。高可用主要是针对架构而言,第一步一般会采用分层的思想将一个庞大的应用系统拆分成应用层、中间件、数据存…

SpringBoot+MyBatis-plus实现CRUD (踩坑总结!!!)

一、创建项目&#xff0c;引入相应的依赖 (项目源码在文末) &#xff08;不要选Module !!!!&#xff09; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version&g…

linux常见的二十多个指令

目录 一、指令的概念 二、28个常见的指令 ⭐2.1 ls指令 ⭐2.2 pwd指令 ⭐2.3 cd指令 ⭐2.4tree指令 ⭐2.5 mkdir指令 ⭐2.6 touch指令 ⭐2.7 rmdir指令 ⭐2.8 rm指令 ⭐2.9 clear指令 ⭐2.10 man指令 ⭐2.11 cp指令 ⭐2.12 mv指令 ⭐2.13 cat指令&#xff08;适…

正规文法、正规表达式、有限自动机及其之间的转换(笔记)

The Equivalent Transforming among RG, RE and FA 正规文法 A Grammar G is a quadruple (四元组):G (VN, VT, S, P ) Where, VN is a finite set of nonterminals.VT is a finite set of terminals.S is the start symbol, S ∈ \in ∈ VN.P is a finite set of product…

.Net 使用OpenAI开源语音识别模型Whisper

.Net 使用OpenAI开源语音识别模型 Whisper 前言 Open AI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的 Whisper 神经网络&#xff0c;且它亦支持其它98种语言的自动语音辨识。 Whisper系统所提供的自动语音辨识&#xff08;Automatic Speech Recognition&…

python基础知识(四):input语句、if语句和pass语句

目录 1. input语句2. 强制转换3. if语句4. pass语句 1. input语句 input语句是程序获取从键盘输入的内容&#xff0c;会把输入的内容自动转换成字符串。 使用方法: 变量名 input(“提示语”) 例如 language input("你最爱什么语言?") print(language)这两行代码…

RK3588平台开发系列讲解(项目篇)常见模型结构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、DNN二、CNN三、RNN沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)…

Vue中组件的几个重要点

1 单词命名组件名称 vue推荐的命名组件名称有以下几种&#xff1a; 首先看下组件有几个单词构成 单个单词 如果只有一个单词&#xff0c;那么建议全部小写&#xff0c;用的时候也是全部小写的&#xff0c;或者首字母大写 有人喜欢哪怕只有一个单词也首字母大写&#xff0c;…

读论文-GPRAR

论文&#xff1a;GPRAR: Graph Convolutional Network based Pose Reconstruction and Action Recognition for Human Trajectory Prediction&#xff08;2016&#xff09; 摘要 高精度的预测对于自动驾驶等各种应用至关重要。现有的预测模型在现实世界中很容易出错&#xff0…

linux【网络编程】之HTTP协议

一文了解应用层协议&#xff1a;HTTP协议 一、HTTP协议二、URL2.1 urlencode和urldecode 三、HTTP协议格式3.1 HTTP请求方法3.2 HTTP状态码3.3 HTTP响应报头 四、结合代码理解HTTP通信流程五、长连接六、http会话保持七、postman和fiddler 一、HTTP协议 在上篇文章中我们模拟了…

YOLOV5 + PYQT5双目测距

YOLOV5 PYQT5双目测距 1. 测距源码2. 测距原理3. PYQT环境配置4. 实验结果 1. 测距源码 详见文章 YOLOV5 双目测距&#xff08;python&#xff09; 2. 测距原理 如果想了解双目测距原理&#xff0c;请移步该文章 双目三维测距&#xff08;python&#xff09; 3. PYQT环境…

大数据需要学习哪些内容

Python 已成利器 在大数据领域中大放异彩 Python&#xff0c;成为职场人追求效率的利器&#xff0c;因为不管什么工作&#xff0c;数据都会是工作的一部分&#xff0c;有数据的地方&#xff0c;就有Python&#xff01; 我们知道&#xff0c;随着互联网的发展&#xff0c;线上…

数睿通2.0数据血缘、标准、质量功能更新发布

文章目录 引言数据血缘数据标准数据质量结语 引言 这段时间工作繁忙&#xff0c;琐事较多&#xff0c;加上二阳的冲击&#xff0c;导致数睿通 2.0 的更新进度缓慢&#xff0c;深表歉意&#xff0c;还望大家可以理解。本次更新主要包含数据治理模块的血缘&#xff0c;标准&…

阿里云的云安全审计可以用于哪些安全事件与合规审核?

阿里云的云安全审计可以用于哪些安全事件与合规审核&#xff1f; [本文由阿里云代理商[聚搜云www.4526.cn]撰写] 随着互联网的高速发展&#xff0c;各种互联网应用和服务也在不断涌现。但在运营过程中&#xff0c;安全事件和合规审核问题也不断出现。如何及时、准确地识别并解决…

[Nacos] Nacos Server之间的操作 (十一)

文章目录 1.ServiceManager#init()1.1 定时发送任务1.2 定时更新状态任务1.3 定时清除空service任务 1.ServiceManager#init() PostConstructpublic void init() {// 启动了一个定时任务&#xff1a;每60s当前Server会向其它Nacos Server发送一次本机注册表// 本机注册表是以各…

水声声波频率如何划分?水声功率放大器可将频率放大到20MHz吗?

水声声波频率如何划分&#xff1f;水声功率放大器可将频率放大到20MHz吗&#xff1f; 现如今我们可以在地球任意地区实现通信&#xff0c;是因为电磁波的作用。但是我们都知道海洋占了全球十分之七面积&#xff0c;电磁波在水下衰减速度太快&#xff0c;无法做到远距离传输&am…

linux内核内存管理slab

一、概述 linux内存管理核心是伙伴系统&#xff0c;slab&#xff0c;slub&#xff0c;slob是基于伙伴系统之上提供api&#xff0c;用于内核内存分配释放管理&#xff0c;适用于小内存&#xff08;小于&#xff11;页&#xff09;分配与释放&#xff0c;当然大于&#xff11;页…