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://blog.csdn.net/qq_41453285/article/details/87272751
- MK -网易云课堂(2018Linux云计算架构师最新课程)