恢复演练
目标
使用之前创建的 backup set 进行恢复演练,并通过实际计时判断是否满足 RTO。
为什么重要
恢复的关键就是顺序和验证。不经过临时路径而直接用 -C / 解压,是无法回退的操作;违反增量恢复顺序,又会让本应存在的文件消失。并且,RTO 在实际测量前只是愿望——现实中无法满足 RTO 的首要原因通常不是解压太慢,而是没有把取回 backup 的时间计算在内。
本实验的恢复目标为 RPO 24 小时、RTO 300 秒。
步骤
- 创建
/root/rest目录,并在/root/rest/objective.txt中写入以下两行:RPO=24h/RTO=300s - 将
/root/bk/full.tar.gz恢复到/root/rest/check/。不得改动当前的/root/bk/src。 - 递归比较恢复副本与原件,将结果保存到
/root/rest/diff.txt。(由于第 4 步添加的文件可能造成差异,也可将比较范围限制为conf和data目录。) - 从 archive 中只把
src/app/conf.yaml这一个文件恢复到/root/rest/one/。该目录中不得存在其他文件。 - 使用
--strip-components去掉 archive 中的src/,恢复到/root/rest/stripped/。最终必须存在/root/rest/stripped/app/main.py。 - 按顺序恢复增量 set。在
/root/rest/inc/中依次解压 full → inc0 → inc1,最终必须存在/root/rest/inc/src/app/new.py。 - 再执行一次第 2~6 步的完整恢复并计时,在
/root/rest/timing.txt中写入以下两行:ELAPSED=<초>/MEETS_RTO=<yes|no>(不超过 300 秒则为 yes) - 创建包含以下 5 行的
/root/rest/report.txt:RESTORED_FILES=<2번 복원본의 파일 수>/SELECTIVE=1/STRIPPED_OK=yes/INCREMENTAL_OK=yes/RTO_MET=<7번의 판정>
参考
- selective restore 使用
tar -xzf <아카이브> -C <대상> <아카이브 안 경로>。先通过tar -tzf确认路径。 - incremental restore 按顺序执行
tar --listed-incremental=/dev/null -xzf <아카이브> -C <대상>。 - 计时方法是
S=$(date +%s); ...; E=$(date +%s); echo $((E-S))。 - 常见错误 1:第 2 步没有预先创建目标目录,导致 tar 失败。
- 常见错误 2:第 6 步颠倒增量顺序,后续变更被旧内容覆盖,文件消失。
记录恢复目标
创建 /root/rest 目录,并在 /root/rest/objective.txt 中写入以下两行:
RPO=24h / RTO=300s
本实验已经给出 RPO 和 RTO,请准确写入这些值。
恢复到临时路径
将 /root/bk/full.tar.gz 恢复到 /root/rest/check/。不得改动当前的 /root/bk/src。
绝对不要直接解压到当前位置。请使用指定恢复目标位置的选项。
与原件比较
递归比较恢复副本与原件,将结果保存到 /root/rest/diff.txt。(由于第 4 步添加的文件可能造成差异,也可将比较范围限制为 conf 和 data 目录。)
有命令可以递归比较整个目录。没有差异时,它不会输出内容。
执行 selective restore
从 archive 中只把 src/app/conf.yaml 这一个文件恢复到 /root/rest/one/。该目录中不得存在其他文件。
把 archive 内路径作为参数,即可只解压该文件。请先从列表确认准确路径。
调整路径后恢复
使用 --strip-components 去掉 archive 中的 src/,恢复到 /root/rest/stripped/。最终必须存在 /root/rest/stripped/app/main.py。
有一个选项可以指定去掉前面多少个路径组成部分。
按增量顺序恢复
按顺序恢复增量 set。在 /root/rest/inc/ 中依次解压 full → inc0 → inc1,最终必须存在 /root/rest/inc/src/app/new.py。
必须先恢复 full,再按顺序恢复增量。恢复时不要更新 snapshot 文件。
测量恢复时间
再执行一次第 2~6 步的完整恢复并计时,在 /root/rest/timing.txt 中写入以下两行:
ELAPSED=<초> / MEETS_RTO=<yes|no>(不超过 300 秒则为 yes)
以秒计算开始和结束时间之差,并与目标比较后作出判断。
编写演练报告
创建包含以下 5 行的 /root/rest/report.txt:
RESTORED_FILES=<2번 복원본의 파일 수> / SELECTIVE=1 / STRIPPED_OK=yes / INCREMENTAL_OK=yes / RTO_MET=<7번의 판정>
汇总前面步骤的实际结果。差异数量来自比较结果。