引入:
①通常tar针对目录的打包与备份,如果想要对整个文件系统进行备份与还原,就需要用到其它工具
②本片文章介绍xfs文件系统的备份与还原
- xfsdump:xfs文件系统的备份
- xfsrestore:xfs文件系统的还原
- 所有命令以root权限进行
一、XFS文件系统的备份(xfsdump)
1.格式
- xfsdump [-L S_label] [-M M_label] [-l #] [-f 备份文件] 待备份的数据
- xfsdump -I (i的大写)
选项与参数
- -L:xfsdump会记录每次备份的session标头,这里可以填写针对此次文件系统备份的简易说明
- -M:xfsdump可以记录存储媒介的标头,这里可以填写此次文件系统备份的媒介的简易说明
- -l(L的小写):后面的#代表数字,代表备份等级,这个数字也代表session label。共有0-9十个的等级(默认为0,即完整备份)。与完整备份和增量备份时有关
- -f:后面接备份后产生的文件名。可以为一般文件文件名,也可以接/dev/st0磁带等特殊文件名
- -I(i的大写):列出/var/lib/xfsdump/inventory目录下目前备份的信息状态
2.xfs文件系统备份的限制与注意事项
- xfsdump只能备份xfs文件系统
- xfsdump必须使用root的权限才可以操作
- xfsdump备份备份下来的数据(文件/存储媒介)只能让xfsrestore解析。备份的文件名后缀为.dump
- xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统
- xfsdump是通过文件系统的UUID来辨别各备份文件,因此不能备份两个具有相同UUID的文件系统
- xfsdump默认仅支持文件系统的备份,并不支持特定目录的备份
- 承上,例如:/dev/vda2磁盘时xfs文件系统的,挂载与/boot目录,因此能够对使用xfsdump对/boot进行备份。但是/etc仅是一个目录,不是一个独立的文件系统,因此不能够使用xfsdump对/etc进行备份
3.两个术语:完整备份与增量备份
- 完整备份:文件系统的第一次备份称为完整备份
- 增量备份:第二次及以后备份称为增量备份
- /var/lib/xfsdump/inventory目录:每次备份都会产生记录文件(记录备份信息),这些文件存放在这个目录下
如何理解?:
- 第一次对文件系统备份的时候,会把文件系统的所有数据都进行备份,所以叫做完整备份。而第二次及以后备份的时候,只会备份相对于前一次更改过的文件或者新文件,而不会备份与从前备份过的相同的文件,所以叫做增量备份
4.备份的注意事项
- 文件系统的第一次备份一定是完整备份,后面进行的备份都是增量备份
- 承上,因此-l后面跟的数字也与备份顺序有关。第一次完整备份时填0,后面进行的备份数字逐级递增(2,3,4...)。这个数字也代表这session标头数字
5.完整备份案例
备份哪个?我们的系统中,/dev/sda1分区是挂载到/boot目录下的,且sda1采用的是xfs的文件系统,因此,我们可以对/boot这个目录进行备份,并将备份文件boot.dump存放在/srv目录下
0代表第一次完整备份。-L与-M后面跟的都是建简易说明,自己书写
xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
- 备份完成之后,查看一下/var/lib/xfsdump/inventory目录下的备份记录信息文件
ll /var/lib/xfsdump/inventory/
- 备份完成之后,查看一下/var/lib/xfsdump/inventory目录下目前备份的信息状态
图中显示的是session 0代表第一次完整备份
xfsdump -I
5.增量备份案例
如何备份?我们针对上面的完整备份,在/boot目录下面建立一个大文件testing.img,然后进行增量备份,备份文件名为boot.dump1,存放在/srv目录下
在/boot目录下建立一个大文件testing.img,文件大小为10MB
dd if=/dev/zero of=/boot/testing.img bs=1M count=10
因为是第二次备份,所以-l选项后面填1
xfsdump -l 1 -L boot_1 -M boot_1 -f /srv/boot.dump1 /boot
因为新建立的文件只有10M,所以第二次备份的文件为11M(与10M很相近),这就体现出了增量备份的特点
- 备份完成之后,查看一下/var/lib/xfsdump/inventory目录下目前备份的信息状态
xfsdump -I
二、XFS文件系统的还原(xfsrestore)
1.格式
- xfsrestore -I (i的大写)
- xfsrestore [-f 备份文件名] [-L S_label] [-s 指定目录/文件] 恢复目录(恢复到哪里)
- xfsrestore [-f 备份文件名] - r 恢复目录
- xfsrestore [-f 备份文件名] -i 恢复目录
选项与参数
- -I(i的大写):与xfsdump -I相同,都是查询备份数据的信息
- -f:后面接备份文件,也有可能是/dev/st0磁带机等特殊文件
- -L:每次备份时会标注的session label名称(-l参数可查询),可以通过这一名称来进行还原,更加清楚想要还原哪个文件。不过-L这一项也可以不填
- -s:后面接目录/文件,代表还原时只还原恢复制定的目录/文件,而不是全部还原
- -r:如果用文件来存储备份数据,则不需要这个选项。如果是使用磁带等来存储备份文件,则需要用此项来完成积累恢复还原
- -l(小写):进入交互模式,高级管理员使用,一般使用不到
2.还原的注意事项
- 文件系统还原之后,只有同名文件会被覆盖,而原本备份之后由系统产生的新文件则保留,还存在里面
3.恢复完整备份案例
下面我们将boot.dump备份文件,一个恢复到原来的/boot目录下,一个恢复到/tmp/boot目录下,查看一下差异
xfsrestore -f /srv/boot.dump -L boot_all /boot
xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot
最后两个都还原恢复完成了,查看一下/boot与/tmp/boot两个目录的差别
因为我们第一次完整备份完/boot之后,在/boot目录下增加了一个testing.img文件。所以当还原恢复之后,两个目录只有一个文件的差别
4.恢复增量备份
其实,增量备份的还原与完整备份还原相同
- 例如:我们将增量备份文件/boot.dump2还原到/tmp/boot目录下
xfsrestore -f /srv/boot.dump1 /tmp/boot
5.只还原某一目录案例(-s选项的使用)
如果我们在还原时指向还原备份文件中的某一个文件/目录,则可以使用-s这个选项
- 例如:下面我们只想还原boot.dump备份文件中的grub2目录,将其还原到/tmp/boot2目录下,其他的不还原
xfsrestore -f /srv/boot.dump -L boot_all -s grub2 /tmp/boot2
6.交互模式进行还原(-i选项的使用)
上面介绍过-s只还原某指定的目录/文件,但是如果我们不知道备份文件中有哪些文件名,那如何指定恢复部分目录/文件哪?此时就需要-i选项进入备份文件目录内,使用交互模式选择文件来进行还原
- 例如:我们将/boot.dump备份文件中的某些文件还原到/tmp/boot3目录中
xfsrestore -f /srv/boot.dump -i /tmp/boot3
进入之后,可以看到有几个命令可以执行操作:add添加进还原列表中,delete从还原列表中删除,最后使用extract开始还原操作
- 然后我们使用add命令,将grub和grub2两个文件添加进还原列表中,最后使用extract进行还原
三、xfs_growfs:文件系统扩大
1.功能
2.格式
3.案例
例如:/dev/sda1分区为xfs文件系统,挂载于/mnt目录下
- 将/dev/sda1扩大,扩大之后用df命令可以看到/dev/sda1的分区容量变大
xfs_growfs /mnt