Linux备份-xfsdump,xfsrestore

本次测试环境 虚拟机vm10,Linux系统centos7.5

xfsdump概念

概念:
xfsdump命令可以支持0-9共十个备份级别;而0是完全备份,1-9是增量备份
系统XFS的备份和恢复的过程是可以被中断然后继续的,无需冻结文件系统。
xfsdump甚至特功了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地,相当于热备份

xfsdump命令的格式与参数

功能:备份文件、目录、分区
格式:[root@localhost ~]# xfsdump [选项] 备份存放路径 要备份的设备文件或挂载点

选项:

选项 功能
-f 文件名 指定备份后的文件名
-l xfsdump 默认是0 , xfsdump -l 2 就是增量备份2
-L 指定对备份会话标签
-M 指定设备标签
-s 文件路径 只对指定的文件/目录进行备份
-I 查看备份文件
-i 进入备份文件目录内,使用交互模式选择文件来进行还原
-j 调用 bzlib 库压缩备份文件,备份文件压缩为 .bz2 格式,默认压缩等级是 2;

ls /var/lib/xfsdump/inventory 查看生成的备份档案信息
xfs_info命令行工具来检查数据块大小和数量

要将XFS文件扩展到1986208:xfs_growfs /dev/centos/root -D 1986208
如果你不使用“-D”选项来指定大小,xfs_growfs将会自动扩展XFS文件系统到最大的可用大小。

注意要点

1.dump只能备份centos7版本以下的,他们是ext2或ext3文件系统,centos7后系统就改成默认xfs系统,对ext4也是支持的,xfs系统也有它的备份工具xfsdump
2.Linux系统支持etx,ext(1-4),xfs,JFS2,msdos,vfat,iso9660,smb,ncp,sysv,hpfs,ufs多种文件系统
3.xfsdump不支持没有挂载的文件系统设备, 所以只能备份已挂载的
4.xfsdump必须使用root的权限才能操作(设计文件系统的关系)
5.xfsdump只能备份xfs文件系统, 其他不能
6.xfsdump备份下来的数据(档案或存储媒体) 只能让xfsrestore解析
7.xfsdump是透过文件系统的 UUID来分辨各个备份文档的, 因此不能备份两个具有相同的UUID文件

8.有些机子没xfsdump,得安装
①本地挂载光盘/dev/sr0 /mnt/cdrom,rpm、yum安装xfsdump包,但xfsdump包是本地的,名称也是固定的,得rpm -qa |grep dump 查包,解决包的依赖关系,并安装所需包
②yum网络安装包 yum install xfsdump


新增硬盘,分区,挂载

https://www.cnblogs.com/xwdzj/p/14069517.html



实验挂载备份


创建挂载点
[root@aubin ~]# mkdir /sdb1
[root@aubin ~]# ls
anaconda-ks.cfg  ggb  initial-setup-ks.cfg  公共  视频  文档  音乐
boot.bak.bz2     hhh                        模板  图片  下载  桌面

将/dev/sdb1 挂载到 /sbd1下
[root@aubin ~]# mount /dev/sdb1  /sdb1   
[root@aubin ~]# cd /sdb1
[root@aubin sdb1]# cp /etc/passwd ./

[root@aubin sdb1]# ls
passwd  ssr

向挂载点内创建测试文件
[root@aubin sdb1]# mkdir test
[root@aubin sdb1]# touch txt

[root@aubin sdb1]# ls
passwd  ssr  test  txt

查看该目录下结构
[root@aubin sdb1]# tree ./
./
├── passwd
├── ssr
│   └── txt
├── test
└── txt

2 directories, 3 files

备份测试文件

xfsdump -f  备份存放位置   要备份的路径或设备文件
[root@aubin ~]# xfsdump -f /opt/dump_sdb1  /sdb1    注:备份/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-0            指定备份会话标签,关于这次备份请输入一个标识
session label entered: "dump_sdb1-0"

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

xfsdump: WARNING: most recent level 0 dump was interrupted, but not resuming that dump since resume (-R) option not specified
xfsdump: level 0 dump of aubin:/sdb1
xfsdump: dump date: Wed Dec  2 18:52:32 2020
xfsdump: session id: 58b9d960-7a6e-4a6a-a174-d53b01090763
xfsdump: session label: "dump_sdb1-0"
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: 30592 bytes

 ============================= 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 27384 bytes
xfsdump: dump size (non-dir files) : 3136 bytes
xfsdump: dump complete: 79 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS



备份分区免交互

xfsdump -f /opt/dump_passwd /dev/sdb1 -L dump_passwd -M sdb1



指定文件、目录备份

dump -s 文件路径 指定文件的顶级目录 对指定文件进行备份
备份  /boot/grub2/grub.cfg文件  到/opt/dump_grub.cfg

[root@aubin sdb1]# ls /boot/grub2
device.map  grub.cfg                     grubenv  locale
fonts       grub.cfg.1606577549.rpmsave  i386-pc


[root@aubin sdb1]# xfsdump -f  /opt/dump_grub2    -s  grub2/grub.cfg  /boot    -L dump_grub2  -M boot
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 0 dump of aubin:/boot
xfsdump: dump date: Wed Dec  2 20:34:24 2020
xfsdump: session id: 24e6f5ae-01a5-426b-b31f-582a731cd55c
xfsdump: session label: "dump_grub2"
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: 29632 bytes
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 29360 bytes
xfsdump: dump size (non-dir files) : 5664 bytes
xfsdump: dump complete: 1 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_grub2 OK (success)
xfsdump: Dump Status: SUCCESS


[root@aubin sdb1]# ls /opt
dump_grub2  dump_passwd  dump_sdb1  rh

[root@aubin sdb1]# ll -h  /opt
总用量 88K
-rw-r--r--. 1 root root 29K 12月  2 20:34 dump_grub2
-rw-r--r--. 1 root root 27K 12月  2 19:46 dump_passwd
-rw-r--r--. 1 root root 27K 12月  2 18:53 dump_sdb1
drwxr-xr-x. 2 root root   6 10月 31 2018 rh



查看所有备份文件情况

[root@aubin ~]# xfsdump -I



删除分区~测试恢复

查看备份文件目录
[root@aubin ~]# ls /opt
dump_passwd  dump_sdb1  rh


查看挂载点/sdb1的内容
[root@aubin ~]# cd /sdb1
[root@aubin sdb1]# ls
passwd  ssr  test  txt

[root@aubin sdb1]# rm -rf ./*



xfsrestore~分区

1.格式 xfsrestore -f 备份文件名 要恢复的路径
xfsrestore -I
xfsrestore [-f 备份文件名] [-L S_label] [-s 指定目录/文件] 恢复目录(恢复到哪里)
xfsrestore [-f 备份文件名] - r 恢复目录
xfsrestore [-f 备份文件名] -i 恢复目录
选项与参数

-I:与xfsdump -I相同,都是查询备份数据的信息
-f:后面接备份文件,也有可能是/dev/st0磁带机等特殊文件
-L:每次备份时会标注的session label名称(-l参数可查询),可以通过这一名称来进行还原,更加清楚想要还原哪个文件。不过-L这一项也可以不填
-s:后面接目录/文件,代表还原时只还原恢复制定的目录/文件,而不是全部还原
-r:如果用文件来存储备份数据,则不需要这个选项。如果是使用磁带等来存储备份文件,则需要用此项来完成积累恢复还原
-l(小写):进入交互模式,高级管理员使用,一般使用不到

[root@aubin sdb1]# ll /opt/
总用量 88
-rw-r--r--. 1 root root 29360 12月  2 20:34 dump_grub2
-rw-r--r--. 1 root root 27384 12月  2 19:46 dump_passwd
-rw-r--r--. 1 root root 27384 12月  2 18:53 dump_sdb1
drwxr-xr-x. 2 root root     6 10月 31 2018 rh

[root@aubin sdb1]# ll /sdb1
总用量 0


[root@aubin sdb1]# xfsrestore -f  /opt/dump_sdb1     /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: aubin
xfsrestore: mount point: /sdb1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Wed Dec  2 18:52:32 2020
xfsrestore: level: 0
xfsrestore: session label: "dump_sdb1-0"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 6f40a5c9-35cb-489b-a6a5-09b3d1ca3b41
xfsrestore: session id: 58b9d960-7a6e-4a6a-a174-d53b01090763
xfsrestore: media id: bfb9981c-72ed-4a1d-90ca-c93564b95fb3
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 3 directories and 5 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 2 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /opt/dump_sdb1 OK (success)
xfsrestore: Restore Status: SUCCESS


[root@aubin sdb1]# ls /sdb1
passwd  ssr  test  txt



xfsrestore~单个文件

[root@aubin /]# ls
666  boot  etc   lib    media  opt   root  sbin  srv  tmp  usr
bin  dev   home  lib64  mnt    proc  run   sdb1  sys  uol  var

[root@aubin /]# cd ./var

[root@aubin var]# ls
account  cache  db     games   kerberos  local  log   nis  preserve  spool  tmp  yp
adm      crash  empty  gopher  lib       lock   mail  opt  run       test   www


[root@aubin var]# cp  -r /boot/grub2   ./test
[root@aubin var]# ls ./test
grub2

[root@aubin /]# ls var/test/grub2
device.map  fonts  grub.cfg  grub.cfg.1606577549.rpmsave  grubenv  i386-pc  locale
 
删除 /var/test目录下所有文件
[root@aubin /]# rm -rf /var/test/*
[root@aubin /]# ll /var/test
总用量 0

[root@aubin /]# ls /boot/grub2
device.map  fonts  grub.cfg  grub.cfg.1606577549.rpmsave  grubenv  i386-pc  locale

查看备份文件目录opt
[root@aubin /]# ls /opt
dump_fff  dump_grub2  dump_passwd  dump_sdb1  rh
注:还原某文件原样,必须得是用xfsdump备份的文件来还原
[root@aubin /]# xfsrestore -f  /opt/dump_grub2   -s grub2  /var/test 
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: aubin
xfsrestore: mount point: /boot
xfsrestore: volume: /dev/sda1
xfsrestore: session time: Wed Dec  2 20:34:24 2020
xfsrestore: level: 0
xfsrestore: session label: "dump_grub2"
xfsrestore: media label: "boot"
xfsrestore: file system id: ec339b21-156e-4def-a0a8-3f41e06040a5
xfsrestore: session id: 24e6f5ae-01a5-426b-b31f-582a731cd55c
xfsrestore: media id: bf594c95-7c3f-4ea6-a541-3ba021524f10
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 2 directories and 24 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /opt/dump_grub2 OK (success)
xfsrestore: Restore Status: SUCCESS

[root@aubin /]# ls /var/test
grub2
对比没备份和备份过后占用内存的差距
[root@aubin grub2]# du -s /boot/grub2
8104	/boot/grub2
[root@aubin grub2]# du -s /opt/dump_grub2
32	/opt/dump_grub2





xfsdump~增量备份

[root@aubin /]# ls
666  boot  etc   lib    media  opt   root  sbin  srv  tmp  usr
bin  dev   home  lib64  mnt    proc  run   sdb1  sys  uol  var

[root@aubin /]# tree /sdb1
/sdb1
├── passwd
├── ssr
│   └── txt
├── test
└── txt

2 directories, 3 files

[root@aubin sdb1]# ls /opt
111  dump_fff    dump_passwd  rh

完全备份/sdb1 到/opt/dump_sdb0

[root@aubin aubin]# xfsdump  -L  grup0   -M grup0  -f  /opt/dump_grub0    /sdb1 
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: WARNING: most recent level 0 dump was interrupted, but not resuming that dump since resume (-R) option not specified
xfsdump: level 0 dump of aubin:/sdb1
xfsdump: dump date: Thu Dec  3 10:55:00 2020
xfsdump: session id: 41ccdb4b-05d3-4052-a63a-2d4601dbe707
xfsdump: session label: "grup0"
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: 30592 bytes
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 27384 bytes
xfsdump: dump size (non-dir files) : 3136 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_grub0 OK (success)
xfsdump: Dump Status: SUCCESS

给//sdb1下增加内容,增量备份1(其他1-9备份同理)

原文件
[root@aubin sdb1]# ls /opt
111  dump_fff    dump_passwd  dump_grub0  rh
[root@aubin sdb1]# ls  /sdb1
passwd  ssr  test  txt


操作
[root@aubin sdb1]# touch  s1 s2
[root@aubin /]# tree /sdb1
/sdb1
├── passwd
├── ssr
│   └── txt
├── s1
├── s2
├── test
└── txt

2 directories, 3 files


[root@aubin sdb1]# xfsdump   -l 1   -L  grup1   -M grup1  -f  /opt/dump_grub1    /sdb1 
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 1 incremental dump of aubin:/sdb1 based on level 0 dump begun Thu Dec  3 10:55:00 2020
xfsdump: dump date: Thu Dec  3 10:57:15 2020
xfsdump: session id: 60ff85af-791d-4801-b21d-ac369e38193f
xfsdump: session label: "grup1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: pruning unneeded subtrees
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 21440 bytes
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 22416 bytes
xfsdump: dump size (non-dir files) : 0 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_grub1 OK (success)
xfsdump: Dump Status: SUCCESS


操作后的文件
[root@aubin sdb1]# ls
passwd  s1  s2  ssr  test  txt

[root@aubin sdb1]# ls /opt
111  dump_fff  dump_grub0  dump_grub1  dump_passwd  rh



xfsdump~还原所有增量备份

注:还原得先还原 完全备份0 --> 增量备份1 --> 增量备份2 --> 增量备份3 依次还原。

原文件
[root@aubin sdb1]# ls /opt
111  dump_fff  dump_grub0  dump_grub1  dump_passwd  rh

[root@aubin sdb1]# ls /sdb1
passwd  s1  s2  ssr  test  txt


操作
[root@aubin aubin]# rm -rf /sdb1/*
[root@aubin aubin]# tree /sdb1/
/sdb1/

0 directories, 0 files



操作后的文件
先还原 其完全备份文件
[root@aubin aubin]# xfsrestore -f /opt/dump_grub0 /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: aubin
xfsrestore: mount point: /sdb1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Thu Dec  3 10:55:00 2020
xfsrestore: level: 0
xfsrestore: session label: "grup0"
xfsrestore: media label: "grup0"
xfsrestore: file system id: 6f40a5c9-35cb-489b-a6a5-09b3d1ca3b41
xfsrestore: session id: 41ccdb4b-05d3-4052-a63a-2d4601dbe707
xfsrestore: media id: 2b091d38-5a2a-4c9c-a446-36758bcca7d9
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 3 directories and 5 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /opt/dump_grub0 OK (success)
xfsrestore: Restore Status: SUCCESS

[root@aubin aubin]# tree /sdb1/
/sdb1/
├── passwd
├── ssr
│   └── txt
├── test
└── txt

2 directories, 3 files



再次操作  还原其增量备份1
[root@aubin aubin]# xfsrestore -f /opt/dump_grub1 /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: aubin
xfsrestore: mount point: /sdb1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Thu Dec  3 10:57:15 2020
xfsrestore: level: 1
xfsrestore: session label: "grup0"
xfsrestore: media label: "grup0"
xfsrestore: file system id: 6f40a5c9-35cb-489b-a6a5-09b3d1ca3b41
xfsrestore: session id: 60ff85af-791d-4801-b21d-ac369e38193f
xfsrestore: media id: cc0ecd2e-210b-47aa-8d12-fea1f8ba5171
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 6 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 1 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /opt/dump_grub1 OK (success)
xfsrestore: Restore Status: SUCCESS

[root@aubin aubin]# tree /sdb1
/sdb1
├── passwd
├── s1
├── s2
├── ssr
│   └── txt
├── test
└── txt

2 directories, 5 files

参考文档

当你的才华配不上你的野心,努力的时候到了!
原文地址:https://www.cnblogs.com/xwdzj/p/14058046.html