centos7使用了xfs格式作为默认文件系统,
xfs提供了xfsdump备份, xfsrestore恢复
- xfs的备份和恢复过程是可以被中断然后继续的,无需冻结文件,无需冻结文件系统
- xfsdump甚至提供了高性能的多线程备份操作----他把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地
xfsdump的备份级别有以下两种,默认为0
- 0 级别代表 : 完全备份
- 1到9级别代表 : 增量备份
- 完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化
- 增量备份:每次将之前(第一次,第二次,直到前一次)做过备份之后又变化的文件备份
- 差异备份:每次都将第一次完整备份依赖有变化的文件进行备份
centos7,添加一块虚拟硬盘,(准备一个测试环境)
正常使用一块硬盘的过程
- 添加磁盘 > 分区 > 格式化 > 挂载
1添加磁盘
关闭centos 通过虚拟机>硬盘>添加设备>新硬盘, 开机centos
2分区
ls /dev/sd*
可以看到多了一个/dev/sdb,这就是第二个磁盘(刚刚添加的)
使用fdisk对它进行分区
fdisk /dev/sdb
输入p查看分区
n新建分区
选择p主分区
w保存
3格式化
格式化成xfs文件系统
mkfs.xfs /dev/sdb1
4挂载
创建挂载点 mkdir /sdb1 挂载 mount /dev/sdb1 /sdb1/
备份整个系统
xfsdump -f 备份存放位置 要备份路径或者目录
- 注意:备份的路径不能写成/sdb1/
- 可以写成/dev/sdb1 或者/sdb1
xfsdump -f /opt/dump_sdb1 /dev/sdb1
会提示指定会话标签 : dump_sdb1
提示指定设备标签 : sdb1
也可以指定备份时免交互,方便后期做定时备份
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
- -L 指定会话标签,,记录每次备份的session标头,这里填写对此文件系统的简易说明
- -M 指定设备标签,, 记录存储媒体的标头,这里填写此媒体的简易说明
当然也可以备份分区中的某一个目录
参数 : -s
- -s 文件路径 只对指定的文件进行备份
- -s指定时,路径写的是相对路径
xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grup2 -M boot
- 这条命令中-s后面指定的grub2/grub.cfg位于boot目录下面
文件系统的恢复
xfsrestore -f 指定恢复文件的位置,指定存放恢复后的文件的路径
xfsrestore -f /opt/dump_sdb1 /sdb1
- 恢复单个文件
xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg /boot
在使用xfsdump时有如下限制
xfsdump不支持没有挂载的文件备份命令
xfsdump必须root的权限才能操作
xfsdump只能备份xfs文件系统
xfsdump备份的数据,只能让xfsrestore解析
增量备份
概念:是指在上一次全备份或者在上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者删除的文件
第一次增量备份的对象是进行全备份后产生的增加和修改的文件,第二次增量备份的对象时进行第一次增量备份后所产生的增加和修改的文件
- 优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间比较短
- 缺点:数据恢复相对比较麻烦,他需要上一次全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从全备份到以此增量备份的时间顺序逐个反推恢复,因此可能会延长恢复时间
实战:
1 第一次完全备份
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
2 将要备份的目录添加内容,进行增量备份
xfsdump -l 1 -f /opt/dump_sdb1.1 /dev/sdb1 -L dump_sdb1.1 -M sdb1
-l <level> : 做一个等级为1的备份
3 接着添加内容,继续进行增量备份
xfsdump -l 2 -f /opt/dump_sdb1.2 /dev/sdb1 -L dump_sdb1.2 -M sdb1
-l <level>做一个等级为2的备份
4 删除原始数据,
rm -rf /sdb1/*
现在改如何恢复呢
步骤:
- 先恢复完全备份
- 情况一:恢复最后一次增量备份,(如果两次增量备份都是1级别的所以只需要备份最后一个增量就可以了)
- 情况二:如果你做的是第一次是1级倍,第二次是2级倍,那么你在恢复的时候就需要先恢复1级倍,然后是2级倍,以此类推
- 那么很明显,我们这个实例是情况二
恢复完全备份 xfsrestore -f /opt/dump_sdb1 /sdb1 第一次增量恢复 xfsrestore -f /opt/dump_sdb1.1 /sdb1 第二次增量恢复 xfsrestore -f /opt/dump_sdb1.2 /sdb1
经过测试发现第一次和第二次增量恢复的顺序是可以颠倒的,因为他们备份的都是特定的数据