Linux Centos7 xfsdump文件系统的备份和恢复

2023-05-16

       xfs提供了 xfsdump 和 xfsrestore工具,协助备份xfs文件系统中的数据。xfsdump按 inode顺序备份一个xfs文件系统

       CentOS7默认文件系统是xfs,CentOS6默认文件系统是ext4,但仍然支持ext4。xfs专为大数据产生,每个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过 xfsdump和 xfsrestore来备份和恢复。原始备份数据方法:cp

       与传统的 UNIX文件系统不同,xfs不需要备份前卸载;对使用中的xfs文件系统做备份就可以保证镜像的一致性。xfs的备份和恢复的过程是可以被中断然后继续的,无需冻结文件系统。xfsdump甚至特功了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地。

 

首先了解一下xfsdump的备份级别有以下两种:0,代表完整备份;1~9,代表增量备份。默认为0(即完全备份)。

       完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;

       增量备份:每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;

文件大小

计算机最小存储计量单位是:bit(位)

计算机最基本存储计量单位是:Bytes(字节)

其他常用单位:

1KB(Kilobyte)、1Mb(Megabyte)、1GB(Gigabyte)、1TB(terabyte)

1PB(Petabyte 拍字节;万进级计数法中是“千兆”字节)=1024TB

1EB(Exabyte 艾字节;万进级计数法中是“百京”字节)=1024PB

文件大小的单位换算

1Byte = 8 bit   #一个字节等于8位 可以简写成1B = 8b
1KB = 1028B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB

一、环境准备

实验环境:VMware12 ,CentOS7.6系统

1、系统CentOS7.6 添加一块虚拟硬盘(大小:20G 准备一个测试分区),分区,格式化,挂载

1)在虚拟机中添加一块新硬盘

      关闭状态下编辑添加,其他默认

           

 

   2)新硬盘分区-格式化-挂载到一个系统目录

       

    SCSI 和SATA硬盘在Linux通常也是表示为/dev/sd* ,比如sda 、sdb、adc ... ;sda是第一块硬盘,sdb是第二块,以此类推。

这里创建一个1G的sdb1分区,xfs格式化,并挂载到新建的文件夹/sdb1。输入一下命令:

1、分区

[root@centos7 ~]# fdisk /dev/sdb   #分区硬盘
1)命令(输入  m  获取帮助):n	 //创建一个新的分区
2)Select   (default   p):   p	 //创建一个主分区
3)分区号 (1-4,默认 1):1    //分区号
4)起始 扇区 (2048-41943039,默认为 2048):2048    //起始位置,一般默认即可
5)Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G   //指定分区大小,不是默认一定要有加号'+'
6)命令(输入 m 获取帮助):p	//打印分区表,看一下分好没,可选项,也可直接输入w
7)命令(输入 m 获取帮助):w    //保存退出

2、查看分区,格式化分区

      格式化分区mkfs.xfs格式化,如果格式化成ext4,那就mkfs.ext4

[root@centos7 ~]# ls /dev/sd*
[root@centos7 ~]# mkfs.xfs /dev/sdb1

3、创建挂载的文件夹

[root@centos7 ~]# mkdir /sdb1

4、临时挂载

[root@centos7 ~]# mount /dev/sdb1 /sdb1

运行如下: 

[root@centos7 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x7e979216 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):^C
[root@centos7 ~]# ls /dev/sd*   
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb
[root@centos7 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xa366e322 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@centos7 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdb1
[root@centos7 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, 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@centos7 ~]# mkdir /sdb1
[root@centos7 ~]# mount /dev/sdb1 /sdb1

3)查看挂载情况

    

2、在新硬盘的分区(sdb1)中新建一下文件,用来测试备份用

[root@centos7 ~]# cp -rp /root/abc/ /sdb1
[root@centos7 ~]# mv /sdb1/abc/test22/ /sdb1/
[root@centos7 ~]# tree /sdb1                 
/sdb1
├── abc
│   ├── aa_dir
│   │   ├── aa1_dir
│   │   │   └── a1.txt
│   │   ├── aa.txt
│   │   └── file3.cfg
│   ├── aa_dir.tar
│   ├── aa_dir.tar.bz2
│   ├── aa_dir.tar.gz
│   ├── aa_dir.zip
│   ├── bb_dir
│   └── file2.cfg
└── test22
    ├── anaconda-ks.cfg
    └── test_d

3、xfsdump 命令

   要是找不到  xfsdump 命令,安装一下

[root@centos7 ~]# yum list | grep "xfsdump"
xfsdump.x86_64                              3.1.7-1.el7                CentOS7  
[root@centos7 ~]# rpm -qa xfsdump
[root@centos7 ~]# yum -y install xfsdump

注意:使用 xfsdump 时,请注意几个限制:

1)xfsdump 不支持没有挂载的文件系统备份!所以只能备份已挂载的!

2)xfsdump 必须使用 root 的权限才能操作

3)xfsdump 只能备份 XFS 文件系统

4)xfsdump 备份下来的数据只能让 xfsrestore 解析

 

二、完整备份

1、备份整个分区

1)备份整个分区(分三步)

      输入命令:xfsdump -f  备份文件要存放的位置/起个备份名  备份文件所在的路径

      第一次输入:自定义,指定备份会话标签

      第二次输入:自定义,指定备份标签

    注意:备份文件所在的路径是:分区挂载路径或者设备文件(我这里是:/sdb或者/dev/sdb1),最后不能以“/”结尾

[root@centos7 ~]# xfsdump -f /opt/dump_sdb1_bak_1 /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_bak_1
session label entered: "dump_sdb1_bak_1"

 --------------------------------- end dialog ---------------------------------

xfsdump: level 0 dump of centos7.6:/sdb1
xfsdump: dump date: Thu Jan 16 10:25:02 2020
xfsdump: session id: f148d6d1-e45a-456e-b3b7-14caa5c91305
xfsdump: session label: "dump_sdb1_bak_1"
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: 66560 bytes

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 -> sdb1_bak_1
media label entered: "sdb1_bak_1"

 --------------------------------- 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 46000 bytes
xfsdump: dump size (non-dir files) : 20224 bytes
xfsdump: dump complete: 31 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_sdb1_bak_1 OK (success)
xfsdump: Dump Status: SUCCESS

2)指定备份时免交互操作,上面三步合成一步,方便后期定时备份。

[root@centos7 ~]# xfsdump -f /opt/dump_sdb1_bak_2 /sdb1 -L dump_sdb1_bak_2 -M sdb1_bak_2

参数: -L  :xfsdump  记录每次备份的 session 标头,这里可以填写针对此文件系统的简易说明

            -M  :xfsdump 可以记录存储媒体的标头,这里可以填写此媒体的简易说明

    

2、指定只备份分区中某个目录/文件

基本格式:xfsdump  -f  备份文件要存放的位置/起个备份名  -s 要备份某个文件或目录的相对位置  备份文件所在的分区 -L  -M  

参数:-s 文件路径 ,项目路径不能以 “/” 开始,-s后面的路径写的是相对路径(相对于备份文件所在的分区)

           -L   -M  和之前一样

1)备份单个文件

[root@centos7 ~]# xfsdump -f /opt/dump_sdb1_file2.cfg -s abc/file2.cfg /sdb1 -L dump_sdb1_file2.cfg -M sdb1_file2.cfg

2)备份单个目录

[root@centos7 ~]# xfsdump -f /opt/dump_sdb1_test22 -s test22 /sdb1 -L dump_sdb1_test22 -M sdb1_test22

    

3、查看备份信息内容

    备份成功后,可以在/var/lib/xfsdump/inventory目录下看到生成的档案信息

# xfsdump  -I(字母大写i)

4、文件系统恢复

    基本格式:xfsrestore -f  指定备份文件存放的位置   指定把存备份文件恢复到的目标路径

    这里恢复到设备文件(分区挂载路径/sdb1)中: 测试之前,先删除之前的内容

[root@centos7 ~]# rm -rf /sdb1/*

1)恢复整个备份

[root@centos7 ~]# xfsrestore -f /opt/dump_sdb1_bak_2 /sdb1 

[root@centos7 ~]# tree /sdb1
/sdb1
├── abc
│   ├── aa_dir
│   │   ├── aa1_dir
│   │   │   └── a1.txt
│   │   ├── aa.txt
│   │   └── file3.cfg
│   ├── aa_dir.tar
│   ├── aa_dir.tar.bz2
│   ├── aa_dir.tar.gz
│   ├── aa_dir.zip
│   ├── bb_dir
│   └── file2.cfg
└── test22
    ├── anaconda-ks.cfg
    └── test_d

6 directories, 9 files
[root@centos7 ~]# rm -rf /sdb1/*

2)恢复单个某个目录/文件

[root@centos7 ~]# xfsrestore -f /opt/dump_sdb1_test22 /sdb1

[root@centos7 ~]# tree /sdb1
/sdb1
└── test22
    ├── anaconda-ks.cfg
    └── test_d

2 directories, 1 file

 恢复备份,命令语法一致。

三、增量备份

概念

       增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件

       这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,以此类推。

优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。

缺点:数据恢复相对比较麻烦,它需要上一次全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,因此可能会延长的恢复时间。

 

测试之前,先删除一些的内容,然后增加删除内容,进行增量备份

[root@centos7 ~]# rm -rf /sdb1/abc/test22/
[root@centos7 ~]# tree /sdb1              
/sdb1
└── abc
    ├── aa_dir
    │   ├── aa1_dir
    │   │   └── a1.txt
    │   ├── aa.txt
    │   └── file3.cfg
    ├── aa_dir.tar
    ├── aa_dir.tar.bz2
    ├── aa_dir.tar.gz
    ├── aa_dir.zip
    ├── bb_dir
    └── file2.cfg

4 directories, 8 files

1、增量备份

第一次完全备份

第二次以后采用增量备份

xfsdump -l n -f 后面同上

参数:-l [n],(L的小写)n为备份级别,设置备份级别

1)完整备份

[root@centos7 ~]# xfsdump -f /opt/zengliang_sdb1_full /sdb1 -L zengliang_sdb1_full -M sdb1_full

2)增加删除点内容,进行第一次增量备份

[root@centos7 ~]# rm -rf /sdb1/abc/bb_dir /sdb1/abc/aa_dir.zip
[root@centos7 ~]# cp -rp /root/abc/test22/ /sdb1/abc/
[root@centos7 ~]# tree /sdb1
/sdb1
└── abc
    ├── aa_dir
    │   ├── aa1_dir
    │   │   └── a1.txt
    │   ├── aa.txt
    │   └── file3.cfg
    ├── aa_dir.tar
    ├── aa_dir.tar.bz2
    ├── aa_dir.tar.gz
    ├── file2.cfg
    └── test22
        ├── anaconda-ks.cfg
        └── test_d

5 directories, 8 files
[root@centos7 ~]# xfsdump -l 1 -f /opt/zengliang_sdb1_back1 /sdb1 -L zengliang_sdb1_back1 -M sdb1_back1

3)增加删除点内容,进行第二次增量备份

[root@centos7 ~]# rm -rf /sdb1/abc/aa_dir.tar
[root@centos7 ~]# mkdir /sdb1/abc/test33
[root@centos7 ~]# tree /sdb1
/sdb1
└── abc
    ├── aa_dir
    │   ├── aa1_dir
    │   │   └── a1.txt
    │   ├── aa.txt
    │   └── file3.cfg
    ├── aa_dir.tar.bz2
    ├── aa_dir.tar.gz
    ├── file2.cfg
    ├── test22
    │   ├── anaconda-ks.cfg
    │   └── test_d
    └── test33

6 directories, 7 files
[root@centos7 ~]# xfsdump -l 2 -f /opt/zengliang_sdb1_back2 /sdb1 -L zengliang_sdb1_back2 -M sdb1_back2

  更多级别增量备份同理,暂时做两次增量备份测试 

  

2、文件系统恢复

步骤:

1)先恢复完整备份

2)如果两次备份都是1级的,那么只需要恢复最后一次增量备份;但如果第一次是1级备份,第二次是2级备份,那么需要先恢复完整备份,然后恢复1级备份,最后2级备份

     这里恢复到设备文件(分区挂载路径/sdb1)中: 测试之前,先删除之前的内容

[root@centos7 ~]# rm -rf /sdb1/*

1)恢复完整备份

[root@centos7 ~]# xfsrestore -f /opt/zengliang_sdb1_full /sdb1/

[root@centos7 ~]# tree /sdb1
/sdb1
└── abc
    ├── aa_dir
    │   ├── aa1_dir
    │   │   └── a1.txt
    │   ├── aa.txt
    │   └── file3.cfg
    ├── aa_dir.tar
    ├── aa_dir.tar.bz2
    ├── aa_dir.tar.gz
    ├── aa_dir.zip
    ├── bb_dir
    └── file2.cfg

4 directories, 8 files

2)恢复第一次增量备份

[root@centos7 ~]# xfsrestore -f /opt/zengliang_sdb1_back1 /sdb1/

[root@centos7 ~]# tree /sdb1
/sdb1
└── abc
    ├── aa_dir
    │   ├── aa1_dir
    │   │   └── a1.txt
    │   ├── aa.txt
    │   └── file3.cfg
    ├── aa_dir.tar
    ├── aa_dir.tar.bz2
    ├── aa_dir.tar.gz
    ├── aa_dir.zip
    ├── bb_dir
    ├── file2.cfg
    └── test22
        ├── anaconda-ks.cfg
        └── test_d

6 directories, 9 files

3)恢复第二次增量备份

[root@centos7 ~]# xfsrestore -f /opt/zengliang_sdb1_back2 /sdb1/

[root@centos7 ~]# tree /sdb1
/sdb1
└── abc
    ├── aa_dir
    │   ├── aa1_dir
    │   │   └── a1.txt
    │   ├── aa.txt
    │   └── file3.cfg
    ├── aa_dir.tar
    ├── aa_dir.tar.bz2
    ├── aa_dir.tar.gz
    ├── aa_dir.zip
    ├── bb_dir
    ├── file2.cfg
    ├── test22
    │   ├── anaconda-ks.cfg
    │   └── test_d
    └── test33

7 directories, 9 files

    这里看到完整备份之后,删除的文件,在恢复到第二次增量备份时也恢复了,这里不难理解

    

参考文章:xfs文件系统的备份和恢复

    站在前辈的肩膀上,每天进步一点点

ends~

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux Centos7 xfsdump文件系统的备份和恢复 的相关文章

随机推荐

  • NVM 安装node.js后没有npm

    我们在使用NVM管理工具安装一个新的node后 xff0c 发现没有npm可以使用 参考文档 是因为在使用NVM安装node的时候不会默认安装npm xff0c 所以需要我们自己下载后放到nvm对应的node目录下面 npm下载地址 xff
  • idea项目设置鼠标右键点击文件夹通过IDEA打开

    每次打开idea项目是每次都要打开idea再手动选择项目 xff0c 直接设置成右键打开会很方便 效果图 xff1a 1 首先 win 43 R 输入regedit 打开注册表 2 打开注册表后找到如下路径 xff1a 计算机 HKEY L
  • Java利用Stream统计List中每个元素的个数

    1 传统HashMap 新建HashMap然后for循环List去统计每个元素出现的次数的方法实现 public static Map lt String Integer gt frequencyOfListElements List it
  • Git操作一直要求输入用户名和密码

    通过如下命令配置 xff1a git config global credential helper store git config global user email git config global user name 配置好后再去
  • Linux下的简单线程池

    问题描述 xff1a 在我们的日常生活中 xff0c 如果我们现在要浏览一个网页或者频繁的打开一个执行时间较短的任务 xff0c 如果每次调用都创建一个线程 xff0c 使用结束后就立即释放 xff0c 那么这样的开销对于操作系统来说有点太
  • 对于MYSQL中左对齐右对齐的实现

    在查询表的时候 xff0c 因为是表格的形式 会想要让其左对齐和右对齐的形式 能够看起来舒服一点 书上写的是ltrim rtrim方法 但是具体实现起来并不是很理想 左对齐很快 一开始表格的显示形式就是左对齐 或者用ltrim 右对齐的话
  • 记录罗技键盘从win切换mac的经历

    罗技蓝牙键盘ALT和WIN键 OPT和CMD键 如何对调 今天一直正常使用的罗技K380蓝牙键盘 不知道怎么抽风了 opt键和cmd键位置对调了 也就是windows环境下alt键和win键对调了 在使用复制粘贴快捷键的时候 特别不方便 而
  • IDEA中@author模板的设置

    在设置中查找Editor中的File and Code Templates 具体如下图所示 Created by IntelliJ IDEA 64 Author USER 64 create DATE TIME
  • 解决Win10搜索框没有反应

    刚发现电脑搜索突然不好使 xff0c 这个办法一下就解决了 在状态栏左下角的搜索框搜索OneNote没有任何反应 xff0c 对 xff0c 就是这个地方 最后在另一篇博客上找到了答案 xff0c 那篇博客也是在知乎找到的答案 xff0c
  • mac终端走代理

    mac终端走代理 mac即使打开了代理可以正常上网 xff0c 但终端默认不走代理 xff0c 需要手动配置终端代理 mac终端走代理的方法 span class token operator span 方法一 xff1a xff08 推荐
  • 从数据集CLEVR来看视觉推理的发展

    一 视觉推理的发展 视觉推理 Visual Reasoning 概念的兴起是在Li Fei Fei组提出的 CLEVR 数据集后 xff0c 被大家广泛认识并且越来越多的人开始研究 xff0c 大家提出的各种模型都是为了让机器或者是神经网络
  • Xmanager安装与使用攻略

    文章目录 前言一 工具二 步骤 前言 Xmanager 是一款可以在自己的办公电脑Windows机器下 xff0c 用于远程连接控制服务器Linux UNIX的管理工具 本经验介绍如何在windows上安装xmanager 一 工具 XMa
  • tensorflow的tensor张量如何转化为numpy数组?

    比方说 xff0c a是一个已经定义好的tensor张量 那么直接 xff1a a numpy 即可
  • vnc登录不上解决办法

    备忘 xff01 环境介绍 xff1a ubantu16 04 xff0c 安装了anaconda xff0c QT xff0c cmake xff0c 乱七八糟一堆东西 环境变量也改了很多 xff0c 不知为何会影响vnc桌面的启动 解决
  • js删除数组中的指定对象

    文章目录 实现效果封装工具函数完整demo 实现效果 封装工具函数 思路就是 xff0c 遍历取到每个对象和对应下标 xff0c 通过自定义的函数判断该对象是否删除 xff0c span class token comment 删除数组中指
  • 用OpenCV储存视频时遇到的问题

    用 MJPG 格式储存 34 avi 34 格式时报错 cv2 error OpenCV 3 4 1 io opencv modules videoio src container avi cpp 737 error 215 pos lt
  • debian 10执行提示service: command not found(找不到service命令)解决方法

    debian 10 用 root 执行提示 bash service command not found xff08 找不到 service 命令 xff09 解决方法 问题 想要执行 service xff0c 发现找不到命令 xff0c
  • IAR平台进行编译时常见错误:

    1 IAR编辑时出现如下错误 xff1a Near constant start address 43 size must be less than 错误原因是 xff1a 代码对应的Device 芯片选型错误 解决方法 xff1a 将Ge
  • PHPexcel报出错误‘break‘ not in the ‘loop‘ or ‘switch‘ context

    今天本地改代码改完做测试发现现在的文件中打开是 break 39 not in the 39 loop 39 or 39 switch 39 context 这样的 xff1b 当时一脸懵逼 xff0c 这是一个老项目最近也没动啊怎么回事
  • Linux Centos7 xfsdump文件系统的备份和恢复

    xfs提供了 xfsdump 和 xfsrestore工具 xff0c 协助备份xfs文件系统中的数据 xfsdump按 inode顺序备份一个xfs文件系统 CentOS7默认文件系统是xfs xff0c CentOS6默认文件系统是ex