由于 CentOS 7 及以后版本已经使用 XFS 文件系统作为默认文件系统,对于 XFS 文件系统,使用的备份和还原工具分别是 xfsdump 与 xfsrestore
1、使用xfsdump备份文件系统
1.1、xfsdump简介
xfsdump 除了可以进行文件系统的完整备份之外,还可以进行增量备份。所谓的增量备份,就是假设 /home 是独立的一个文件系统,那么在第一次使用 xfsdump 进行完整备份后,等文件系统使用一段时间后,再进行第二次 xfsdump 时,就可以选择增量积备份了,此时新备份的数据只会记录与第一次完整备份有差异的文件,而不会备份所有文件
-
使用xfsdump注意事项
-
xfsdump 不支持没有挂载的文件系统备份,只能备份已挂载的
-
xfsdump 必须使用 root 的权限才能操作
-
xfsdump 只能备份 XFS 文件系统
-
xfsdump 备份下来的数据只能使用 xfsrestore 解析
-
xfsdump 是通过文件系统的 UUID 来分辨各个备份文件的,因此不能备份两个具有相同 UUID 的文件系统
-
xfsdump 默认仅支持文件系统的备份,并不支持特定目录的备份,因此不能用 xfsdump 去备份某一个目录
-
1.2、语法与参数
-
语法
[root@localhost ~]# xfsdump [-L S_label] [-M M_label] [-l n] [-f 备份名称] 待备份资料 [root@localhost ~]# xfsdump -I
-
常用选项
-L :xfsdump 会记录每次备份的会话标签,这里可以填写针对此文件系统的简易说明 -M :xfsdump 可以记录储存媒体的标签,这里可以填写此媒体的简易说明 -l :是 L 的小写,备份等级,有0~9共10个等级(预设为 0,即完整备份) -f :类似tar,后面接产生的文件,也可以接例如 /dev/st0 设备文件名或其他一般文件名称 -I :从 /var/lib/xfsdump/inventory 列出目前备份的信息状态
1.3、完整备份系统
-
确认需要备份的系统是否时独立文件系统
[root@localhost ~]# df -h /boot 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 1014M 239M 776M 24% /boot
-
完整备份文件系统
[root@localhost ~]# xfsdump -l 0 -L boot_all -M boot_all -f /backup/boot.dump /boot xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control # 开始备份本机/boot系统 xfsdump: level 0 dump of localhost.localdomain:/boot # 备份的时间 xfsdump: dump date: Fri Aug 19 17:15:32 2022 # 本次备份的ID xfsdump: session id: 61ad94fe-d55c-4e85-90fe-3b0e8198ac2f # 会话名称 xfsdump: session label: "boot_all" # 开始备份程序 xfsdump: ino map phase 1: constructing initial dump list xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 215994496 bytes xfsdump: /var/lib/xfsdump/inventory created xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 215668832 bytes xfsdump: dump size (non-dir files) : 215421528 bytes xfsdump: dump complete: 2 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /backup/boot.dump OK (success) xfsdump: Dump Status: SUCCESS
-
确认备份文件
[root@localhost ~]# ls -lah /backup/ 总用量 206M -rw-r--r--. 1 root root 206M 8月 19 17:15 boot.dump
-
查看备份清单
[root@localhost ~]# ls -lah /var/lib/xfsdump/inventory 总用量 16K -rw-r--r--. 1 root root 5.0K 8月 19 17:15 806c1c55-69fd-47a9-80e4-98b44f603ec5.StObj -rw-r--r--. 1 root root 312 8月 19 17:15 d183d72b-00e7-4f30-a12e-e2d768fc225f.InvIndex -rw-r--r--. 1 root root 576 8月 19 17:15 fstab
1.4、增量备份系统
做增量备份的前提是已经完成了完整备份
-
查看之前备份情况
[root@localhost ~]# xfsdump -I file system 0: fs id: d183d72b-00e7-4f30-a12e-e2d768fc225f session 0: mount point: localhost.localdomain:/boot device: localhost.localdomain:/dev/sda1 time: Fri Aug 19 17:15:32 2022 session label: "boot_all" session id: 61ad94fe-d55c-4e85-90fe-3b0e8198ac2f # 上次备份的级别 level: 0 resumed: NO subtree: NO streams: 1 stream 0: # 上次备份的文件名及路径 pathname: /backup/boot.dump start: ino 69 offset 0 end: ino 1577746 offset 0 interrupted: NO media files: 1 media file 0: mfile index: 0 mfile type: data mfile size: 215668832 mfile start: ino 69 offset 0 mfile end: ino 1577746 offset 0 media label: "boot_all" media id: e00efbfb-aa9f-49bf-8fe7-d4fc4c6bd264 xfsdump: Dump Status: SUCCESS
-
增量备份
# 创建一个10M左右的文件 [root@localhost ~]# clear [root@localhost ~]# dd if=/dev/zero of=/boot/test_file bs=1M count=10 记录了10+0 的读入 记录了10+0 的写出 10485760字节(10 MB)已复制,0.0302299 秒,347 MB/秒 # 创建增量备份 [root@localhost ~]# xfsdump -l 1 -L boot_2 -M boot_2 -f /backup/boot.dump_1 /boot # 查看备份文件 [root@localhost ~]# ls -lah /backup/ 总用量 216M drwxr-xr-x. 2 root root 42 8月 19 17:35 . dr-xr-xr-x. 18 root root 238 8月 19 17:15 .. -rw-r--r--. 1 root root 206M 8月 19 17:15 boot.dump # 刚好差不多10M -rw-r--r--. 1 root root 11M 8月 19 17:35 boot.dump_1
-
查看备份清单
[root@localhost ~]# xfsdump -I file system 0: fs id: d183d72b-00e7-4f30-a12e-e2d768fc225f session 0: mount point: localhost.localdomain:/boot device: localhost.localdomain:/dev/sda1 time: Fri Aug 19 17:15:32 2022 ... (此处省略) ... session 1: mount point: localhost.localdomain:/boot device: localhost.localdomain:/dev/sda1 time: Fri Aug 19 17:35:30 2022 session label: "boot_2" session id: db820ddb-92f9-440e-b0ff-7916401f044f level: 1 resumed: NO subtree: NO streams: 1 stream 0: pathname: /backup/boot.dump_1 start: ino 121 offset 0 end: ino 122 offset 0 interrupted: NO media files: 1 media file 0: mfile index: 0 mfile type: data mfile size: 10510952 mfile start: ino 121 offset 0 mfile end: ino 122 offset 0 media label: "boot_2" media id: 9ef5ca2d-1583-4556-9c57-9484ff0b4247 xfsdump: Dump Status: SUCCESS
2、使用xfsrestore恢复文件系统
2.1、语法和常用参数
-
语法
# 查看文件备份资料 [root@localhost ~]# xfsrestore -I # 单一文件全系统恢复 [root@localhost ~]# xfsrestore [-f 备份文件] [-L S_label] [-s] 待恢复目录 # 通过增量备份恢复 [root@localhost ~]# xfsrestore [-f 备份文件] -r 待恢复目录 # 使用交互模式恢复 [root@study ~]# xfsrestore [-f 备份文件] -i 待恢复目录
-
2、常用参数
-I :与xfsdump相同 -f :需要恢复的文件名 -L :就是会话标签,可以使用 -I 查询 -s :需要恢复的目录 -i :进入交互模式
2.2、恢复文件系统
-
使用xfsrestore查看备份数据内容
# 这里我只留了部分信息 [root@localhost ~]# xfsrestore -I file system 0: fs id: d183d72b-00e7-4f30-a12e-e2d768fc225f session 0: mount point: localhost.localdomain:/boot device: localhost.localdomain:/dev/sda1 time: Fri Aug 19 17:15:32 2022 session label: "boot_all" session id: 61ad94fe-d55c-4e85-90fe-3b0e8198ac2f level: 0 stream 0: pathname: /backup/boot.dump media file 0: media label: "boot_all" media id: e00efbfb-aa9f-49bf-8fe7-d4fc4c6bd264
-
恢复level0备份
# 恢复备份 [root@localhost ~]# xfsrestore -f /backup/boot.dump -L boot_all /boot xfsrestore: using file dump (drive_simple) strategy xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control xfsrestore: using online session inventory xfsrestore: searching media for directory dump xfsrestore: examining media file 0 xfsrestore: reading directories xfsrestore: 11 directories and 345 entries processed xfsrestore: directory post-processing xfsrestore: restoring non-directory files xfsrestore: restore complete: 4 seconds elapsed xfsrestore: Restore Summary: xfsrestore: stream 0 /backup/boot.dump OK (success) xfsrestore: Restore Status: SUCCESS
完整备份的数据恢复完成了,但是我们发现好像没有后面我们创建的 10M 文件,因为这是我们在完整备份后新加的文件,所以还得继续恢复 “增量备份”
-
恢复增量备份
其实增量恢复和完整恢复流程一样,只是使用的备份文件不同而已,如果我们备份的顺序是
level 0 —> level 1 —> level 2 ,那么我们恢复也要按相同顺序恢复
[root@localhost ~]# xfsrestore -f /backup/boot.dump_1 -L boot_1 /boot/ ...(内容和上面相同,此处省略)...