一、引入
  • 通常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目录下

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的还原

  • 开始备份:输入如下的命令。0代表第一次完整备份。-L与-M后面跟的都是建简易说明,自己书写
xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的还原_02

  • 备份完成之后,查看一下/var/lib/xfsdump/inventory目录下的备份记录信息文件
ll /var/lib/xfsdump/inventory/

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_文件系统_03

  • 备份完成之后,查看一下/var/lib/xfsdump/inventory目录下目前备份的信息状态。图中显示的是session 0代表第一次完整备份
xfsdump -I

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的还原_04

增量备份演示案例

  • 如何备份?我们针对上面的完整备份,在/boot目录下面建立一个大文件testing.img,然后进行增量备份,备份文件名为boot.dump1,存放在/srv目录下
  • 第一步:建立新文件。在/boot目录下建立一个大文件testing.img,文件大小为10MB
dd if=/dev/zero of=/boot/testing.img bs=1M count=10

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的备份_05

  • 第二步:开始进行增量备份。因为是第二次备份,所以-l选项后面填1
xfsdump -l 1 -L boot_1 -M boot_1 -f /srv/boot.dump1 /boot

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_备份文件_06

  • 备份完成之后,查看一下两个备份文件的大小。因为新建立的文件只有10M,所以第二次备份的文件为11M(与10M很相近),这就体现出了增量备份的特点

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_文件系统_07

  • 备份完成之后,查看一下/var/lib/xfsdump/inventory目录下目前备份的信息状态
xfsdump -I

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的备份_08

三、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

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_备份文件_09

  • 还原恢复到/tmp/boot目录下
xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的备份_10

  • 最后两个都还原恢复完成了,查看一下/boot与/tmp/boot两个目录的差别
  • 使用du与diff两个命令查看一下。因为我们第一次完整备份完/boot之后,在/boot目录下增加了一个testing.img文件。所以当还原恢复之后,两个目录只有一个文件的差别

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的还原_11

恢复增量备份演示

  • 其实,增量备份的还原与完整备份还原相同。例如:我们将增量备份文件/boot.dump2还原到/tmp/boot目录下
xfsrestore -f /srv/boot.dump1 /tmp/boot

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的备份_12

只还原某一目录演示(-s选项的使用)

  • 如果我们在还原时指向还原备份文件中的某一个文件/目录,则可以使用-s这个选项
  • 例如:下面我们只想还原boot.dump备份文件中的grub2目录,将其还原到/tmp/boot2目录下,其他的不还原
xfsrestore -f /srv/boot.dump -L boot_all -s grub2 /tmp/boot2

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_备份文件_13

交互模式进行还原(-i选项的使用)

  • 上面介绍过-s只还原某指定的目录/文件,但是如果我们不知道备份文件中有哪些文件名,那如何指定恢复部分目录/文件哪?此时就需要-i选项进入备份文件目录内,使用交互模式选择文件来进行还原
  • 例如:我们将/boot.dump备份文件中的某些文件还原到/tmp/boot3目录中
xfsrestore -f /srv/boot.dump -i /tmp/boot3

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_文件系统_14

  • 进入之后,可以看到有几个命令可以执行操作:add添加进还原列表中,delete从还原列表中删除,最后使用extract开始还原操作
  • 下面我们用ls列出备份文件中有哪些内容

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs文件系统的备份_15

  • 然后我们使用add命令,将grub和grub2两个文件添加进还原列表中,最后使用extract进行还原

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs|_growfs_16

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs|_growfs_17

四、xfs_growfs:文件系统扩大
  • 功能:可以将已有的文件系统扩大(存储空间/容量)
  • 格式
xfs_growfs   挂载目录
  • 演示案例/dev/sda1分区为xfs文件系统,挂载于/mnt目录下。将/dev/sda1扩大,扩大之后用df命令可以看到/dev/sda1的分区容量变大
xfs_growfs  /mnt

  • 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。

Linux XFS文件系统的备份与还原(xfsdump,xfsrestore,xfs_growfs)_xfs|_growfs_18