1.xfs文件系统介绍
XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。 centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复。 与传统的UNIX文件系统不同,XFS不需要在备份前被卸载;对使用中的XFS文件系统做备份就可以保证镜像的一致性。XFS的备份和恢复的过程是可以被中断然后继续的,无须冻结文件系统。xfsdump 甚至提供了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地 首先了解一下xfsdump的备份级别有以下两种,默认为0(即完全备份)
0 级别代表: 完全备份 1 到9级别代表: 增量备份 扩展: 完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化; 增量备份:每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份; 差异备份:每次都将第一次完整备份以来有变化的文件进行备份。
2.环境准备
2.1添加一块20G硬盘sdb格式化分区
[root@liang ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x77919564
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
[root@liang ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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@liang ~]# mkdir /sdb1
[root@liang ~]# mount /dev/sdb1 /sdb1/
[root@liang ~]# df -h|tail -1
/dev/sdb1 1014M 33M 982M 4% /sdb1
2.2创建测试文件
[root@liang ~]# cp /etc/passwd /sdb1/
[root@liang ~]# touch /sdb1/{a..d}.txt
[root@liang ~]# ls /sdb1/
a.txt b.txt c.txt d.txt passwd
3.备份
3.1备份sdb1整个区
命令格式:xfsdump -f 备份存放位置 要备份路径或设备文件
[root@liang ~]# yum install xfsdump -y
[root@liang ~]# xfsdump -f /opt/dump_sdb1 /sdb1
please enter label for this dump session (timeout in 300 sec)
-> dump01 ###指定备份的会话标签
please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 ###指定设备的标签
3.2免交互式备份
[root@liang ~]# xfsdump -f /opt/dump_sdb01 /sdb1 -L dump_sdb1_02 -M sdb1
[root@liang ~]# ll /opt/dump_sdb01
-rw-r--r--. 1 root root 25832 Oct 22 08:25 /opt/dump_sdb01
-L 记录每次备份的session表头,这里可以填写针对此文件系统的建议说明
-M 可以记录储存媒体的标头,这里可以填写此媒体的简易说明
备份文件
[root@liang ~]# xfsdump -f /opt/dump_passwd_01 -s etc/passwd / -L dump_passwod_01 -M passwd
[root@liang ~]# ll /opt/dump_passwd_01
-rw-r--r--. 1 root root 30192 Oct 22 08:35 /opt/dump_passwd_01
-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)
备份目录
[root@liang ~]# xfsdump -f /opt/dump_etc -s etc / -L dump_etc -M etc
查看备份信息
[root@liang ~]# xfsdump -I|head
file system 0:
fs id: 99df5fda-5b83-4a51-932b-99753f2a46a1
session 0:
mount point: liang:/sdb1
device: liang:/dev/sdb1
time: Mon Oct 22 08:13:31 2018
session label: "dump01"
session id: 3925b411-7499-43ac-a955-dbcdda4e5993
level: 0
resumed: NO
该命令是在此路径下获取信息
[root@liang ~]# ls /var/lib/xfsdump/inventory/
1951d81a-0762-4546-a7cb-4243626ca359.StObj
60c7141a-40ae-440a-9590-18802214f50a.InvIndex
99df5fda-5b83-4a51-932b-99753f2a46a1.InvIndex
affde7e7-84c3-4f36-a612-30eb6adff21b.StObj
fstab
4.恢复
删除文件
[root@liang ~]# rm -rf /sdb1/*
恢复备份
[root@liang ~]# xfsrestore -f /opt/dump_sdb1 /sdb1
[root@liang ~]# ls /sdb1/
a.txt b.txt c.txt d.txt passwd
恢复单个文件
[root@liang ~]# xfsrestore -f /opt/dump_passwd_02 -s etc/passwd /sdb1/
[root@liang ~]# ls /sdb1/etc/
passwd
5.增量备份
5.1增量备份介绍
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前前一次相比增加或者被修改的文件,这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件,第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件。 优缺点:
优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短 缺点:数据恢复相对麻烦,它需要上一次全备份和所有增量备份的内容才能完全恢复成功。
5.2增量备份实战
1.对sdb1进行全量备份
[root@liang ~]# ll /sdb1/
total 0
-rw-r--r--. 1 root root 0 Oct 22 08:09 a.txt
-rw-r--r--. 1 root root 0 Oct 22 08:09 b.txt
-rw-r--r--. 1 root root 0 Oct 22 08:09 c.txt
-rw-r--r--. 1 root root 0 Oct 22 08:09 d.txt
[root@liang ~]# xfsdump -l 1 -f /opt/dump_sdb1_01 /sdb1 -L /dump_sdb1 -M sdb1
[root@liang ~]# ll /opt/dump_sdb1_01
-rw-r--r--. 1 root root 21464 Oct 22 11:57 /opt/dump_sdb1_01
2.增加内容,进行第一次增量备份
[root@liang ~]# touch /sdb1/{1..3}.txt
[root@liang ~]# ls /sdb1/
1.txt 2.txt 3.txt a.txt b.txt c.txt d.txt
[root@liang ~]# xfsdump -l 2 -f /opt/dump_sdb1_02 /sdb1 -L dump_sdb1 -M sdb1
3.删除数据恢复
[root@liang ~]# rm -rf /sdb1/*
[root@liang ~]# xfsrestore -f /opt/dump_sdb1_01 /sdb1/
[root@liang ~]# ls /sdb1/
a.txt b.txt c.txt d.txt
[root@liang ~]# xfsrestore -f /opt/dump_sdb1_02 /sdb1/
[root@liang ~]# ls /sdb1/
1.txt 2.txt 3.txt 4.txt a.txt b.txt c.txt d.txt