首页 > 编程笔记 > Linux笔记 阅读:1

Linux xfsdump命令用法详解(附带实例)

数据备份就是把数据复制一份保存在其他位置,当然,如果能够压缩一下就更好了。那么,使用 tar 或 cp 命令可以实现数据的备份吗?当然可以,不过它们只能实现完全备份,如果想要实现增量备份和差异备份,就必须编写 shell 脚本才行。

在旧版系统中,备份和恢复命令是 dump 与 restore 命令,而从 Linux 7.x 开始,备份与恢复命令已经升级为 xfsdump 与 xfsrestore 命令,用于对 XFS 文件系统进行备份与恢复。我们的 Rocky Linux 9.x 采用的也是 xfsdump 和 xfsrestore 命令。

xfsdump 和 xfsrestore 命令,它们不但可以轻松地实现数据备份和数据恢复,而且可以直接实现增量备份和差异备份。

在正式介绍 xfsdump 命令之前,我们需要知道 xfsdump 命令可以支持 0~9 共 10 个备份级别。其中,0 级别指的就是完全备份,1~9 级别都是增量备份级别:
需要注意的是,只有在备份整个分区或整块硬盘时,才能支持 1~9 的增量备份级别;如果只是备份某个文件或不是分区的目录,那么只能使用 0 级别进行完全备份,命令格式如下:
[root@localhost ~]# xfsdump [选项] 备份之后的文件名 原文件或分区
选项:
这里的“-L”、“-M”两个选项都用于说明备份文档的作用和用途,是 xfsdump 命令的必备选择,在备份时必须写入。如果在 xfsdump 命令中不进行指定,那么在命令执行时会使用交互输入的方式要求用户输入两个选项。

Linux xfsdump备份分区

我们先来看看如何使用 0 级别备份分区,具体如下:
[root@localhost ~]# df -h
文件系统    容量    已用    可用    已用%    挂载点
devtmpfs      4.0M     0     4.0M     0% /dev
tmpfs      465M    0     465M     0% /dev/shm
tmpfs     186M    4.2M    182M     3% /run
/dev/sda3    20G     2.2G    18G    12% /
/dev//dev/sda1   295M    186M    110M    63% /boot
tmpfs      93M     0     93M     0% /run/user/0
#在系统中只划分了/分区和/boot分区。根分区太大,备份速度太慢,我们还是备份/boot分区吧

[root@localhost ~]# xfsdump -l 0 -L "full" -M "full" -f /root/boot.dump0 /boot
#备份/boot分区,使用 0 级别完整备份,将其备份到/root/boot.dump0 文件中
#“-l 0”前一个字符是小写字母l,后一个是数字 0,不要混淆
#“-L”和“-M”说明写“full”代表完整备份
#注意:/boot 分区,不能写成/boot/,否则会报错

[root@localhost ~]# ll -h /root/boot.dump0
-rwxr--x-rw-r-- 1 root root 168M 3 月 19 16:10 /root/boot.dump0
#备份文件已经生成
注意,笔者认为 xfsdump 命令开发得不够完整,有一些 bug 存在。在备份 /boot 分区的时候,命令中不能写成“/boot/”,否则 xfsdump 命令会报错,提示“does not identify a file system(文件系统不识别)”。

如果 /boot 分区的内容发生了变化,就可以使用 1 级别进行增量备份。当然,如果数据会继续发生变化,就可以继续使用 2~9 级别增量备份,命令如下:
[root@localhost ~]# ll -h /etc/services
-rw-r--r--. 1 root root root 677K  6 月 23  2020 /etc/services
#/etc/services 文件是常用端口的说明,这个文件有 677KB

[root@localhost ~]# cp /etc/services /boot/
#复制文件到/boot 分区

[root@localhost ~]# xfsdump -l 1 -L "dump1" -M "dump1" -f /root/boot.dump1 /boot
#进行 1 级别增量备份
#“-l 1”前一个是小写字母 l,后一个是数字 1

[root@localhost ~]# ll -h /root/boot.dump*
-rw-r--r--. 1 root root 97M 8 月 9 15:34 /root/boot.dump0
#boot.dump0 是完整备份,大小有 97MB
-rw-r--r--.1 root root 702K 3 月 19 16:26 /root/boot.dump1
#boot.dump1 是增量备份,大小只有 702KB
xfsdump 命令可以非常方便地实现增量备份,如果是第二次增量备份,就只需要把备份级别写为 2,以后依次增加即可。

但是,如何实现差异备份呢?其实也很简单,先使用 0 级别完全备份一次,以后每次备份都使用 1 级别进行备份。

Linux xfsdump备份文件或目录

xfsdump 命令也可以文件或目录,不过,只要不是备份分区,就只能使用 0  级别进行完全备份,而不再支持增量备份。我们说的 /etc/ 目录是重要的配置文件目录,那么我们就备份这个目录来看看吧,命令如下:
[root@localhost ~]# xfsdump -l 0 -L "etc0" -M "etc0" -f /root/etc.dump0 -s etc /
#在使用 “-s“指定目录时,只能写相对路径,否则会报错
#最后的 “/” 指的是根分区,备份指定目录,需要采用这种格式
[root@localhost ~]# ll -h /root/etc.dump0
-rw-r--r--. 1 root root root 222M 3月 19 16:39 /root/etc.dump0
#查看备份文件
总体来说,xfsdump 命令的格式很别扭,备份文件或目录,格式必须和例子类似,否则会报错。

不过,如果使用增量备份会怎么样呢?命令如下:
[root@localhost ~]# xfsdump -l 1 -L "etc.dump0" -M "etc.dump0" -f /root/etc.dump0 -s etc /
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.10 (dump format 3.0) - type ^C for status and control
xfsdump: ERROR: cannot find earlier dump to base level 1 increment upon
xfsdump: Dump Status: ERROR
#备份失败了,目录备份只能使用 0 级别

相关文章