Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)
原创
©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、引入
- 通常tar针对目录的打包与备份,如果想要对整个文件系统进行备份与还原,就需要用到其它工具
- 本片文章介绍xfs文件系统的备份与还原
-
xfsdump:xfs文件系统的备份
-
xfsrestore:xfs文件系统的还原
- 所有命令以root权限进行
二、XFS文件系统的备份(xfsdump)
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目录下目前备份的信息状态
-
xfs文件系统备份的限制与注意事项:
- xfsdump只能备份xfs文件系统
- xfsdump必须使用root的权限才可以操作
- xfsdump备份备份下来的数据(文件/存储媒介)只能让xfsrestore解析。备份的文件名后缀为.dump
- xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统
- xfsdump是通过文件系统的UUID来辨别各备份文件,因此不能备份两个具有相同UUID的文件系统
- xfsdump默认仅支持文件系统的备份,并不支持特定目录的备份
-
承上,例如:/dev/vda2磁盘时xfs文件系统的,挂载与/boot目录,因此能够对使用xfsdump对/boot进行备份。但是/etc仅是一个目录,不是一个独立的文件系统,因此不能够使用xfsdump对/etc进行备份
-
两个术语:完整备份与增量备份:
-
完整备份:文件系统的第一次备份称为完整备份
-
增量备份:第二次及以后备份称为增量备份
-
/var/lib/xfsdump/inventory目录:每次备份都会产生记录文件(记录备份信息),这些文件存放在这个目录下
-
如何理解?第一次对文件系统备份的时候,会把文件系统的所有数据都进行备份,所以叫做完整备份。而第二次及以后备份的时候,只会备份相对于前一次更改过的文件或者新文件,而不会备份与从前备份过的相同的文件,所以叫做增量备份
-
备份的注意事项:
- 文件系统的第一次备份一定是完整备份,后面进行的备份都是增量备份
- 承上,因此-l后面跟的数字也与备份顺序有关。第一次完整备份时填0,后面进行的备份数字逐级递增(2,3,4...)。这个数字也代表这session标头数字
完整备份演示案例
-
备份哪个?我们的系统中,/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
增量备份演示案例
-
如何备份?我们针对上面的完整备份,在/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)
-
格式:
- 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(小写):进入交互模式,高级管理员使用,一般使用不到
-
还原的注意事项:文件系统还原之后,只有同名文件会被覆盖,而原本备份之后由系统产生的新文件则保留,还存在里面
恢复完整备份演示案例
- 下面我们将boot.dump备份文件,一个恢复到原来的/boot目录下,一个恢复到/tmp/boot目录下,查看一下差异
- 还原恢复到/boot目录下
xfsrestore -f /srv/boot.dump -L boot_all /boot
xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot
- 最后两个都还原恢复完成了,查看一下/boot与/tmp/boot两个目录的差别
- 使用du与diff两个命令查看一下。因为我们第一次完整备份完/boot之后,在/boot目录下增加了一个testing.img文件。所以当还原恢复之后,两个目录只有一个文件的差别
恢复增量备份演示
- 其实,增量备份的还原与完整备份还原相同。例如:我们将增量备份文件/boot.dump2还原到/tmp/boot目录下
xfsrestore -f /srv/boot.dump1 /tmp/boot
只还原某一目录演示(-s选项的使用)
- 如果我们在还原时指向还原备份文件中的某一个文件/目录,则可以使用-s这个选项
-
例如:下面我们只想还原boot.dump备份文件中的grub2目录,将其还原到/tmp/boot2目录下,其他的不还原
xfsrestore -f /srv/boot.dump -L boot_all -s grub2 /tmp/boot2
交互模式进行还原(-i选项的使用)
- 上面介绍过-s只还原某指定的目录/文件,但是如果我们不知道备份文件中有哪些文件名,那如何指定恢复部分目录/文件哪?此时就需要-i选项进入备份文件目录内,使用交互模式选择文件来进行还原
-
例如:我们将/boot.dump备份文件中的某些文件还原到/tmp/boot3目录中
xfsrestore -f /srv/boot.dump -i /tmp/boot3
- 进入之后,可以看到有几个命令可以执行操作:add添加进还原列表中,delete从还原列表中删除,最后使用extract开始还原操作
- 下面我们用ls列出备份文件中有哪些内容
- 然后我们使用add命令,将grub和grub2两个文件添加进还原列表中,最后使用extract进行还原
四、xfs_growfs:文件系统扩大
-
功能:可以将已有的文件系统扩大(存储空间/容量)
- 格式
xfs_growfs 挂载目录
-
演示案例:/dev/sda1分区为xfs文件系统,挂载于/mnt目录下。将/dev/sda1扩大,扩大之后用df命令可以看到/dev/sda1的分区容量变大
xfs_growfs /mnt
- 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。