# 配置定时备份与保留份数

配置实例定时备份的执行时间和保留份数，并搞清楚关闭开关后旧备份是否还会被自动清理。

定时备份策略挂在每个实例上，包含启用开关、每天执行时间和保留份数三个字段。本文说明如何配置这三个字段，以及一个容易被误解的事实：**关闭启用开关不会让已有备份变得安全。**

> [!CAUTION]
> 关闭定时备份的启用开关，只会停止产生**新的**自动备份。已经存在的备份仍然会按照之前保存的保留份数被持续自动清理，直到数量降到保留份数以内为止。这个清理过程不检查开关是否打开，也不会弹出确认框。

_界面示意图：定时备份策略弹层：启用开关、每天执行时间、保留份数输入框、下次执行时间与上次执行时间、保存策略按钮_

## 关闭开关后，会发生什么、不会发生什么

关闭开关前，先看清楚它实际控制的范围有多窄：

| 会发生什么                                                                                     | 不会发生什么                                                                   |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| 已有备份仍按保留份数持续被自动清理，每 15 分钟一轮，每轮最多删除一份，直到数量降到保留份数以内 | 不会因为关闭开关就跳过清理——清理任务遍历全部策略，不检查开关是否打开           |
| 只是停止产生新的定时备份——每 5 分钟一次的调度扫描只处理已启用的策略，关闭后不再产生新备份      | 不会保留"关闭前的最后一份"或给予任何特殊豁免，清理只看数量和创建时间           |
| 如果清理当轮实例正有其它活跃工作请求（例如迁移、开机），本轮跳过，下一轮（15 分钟后）再试      | 不会弹出二次确认，也不会发送通知——这是后台任务自动发起的删除，操作者标记为系统 |
| 一旦被清理任务选中，删除立即执行且不可逆，走的是与手动删除备份相同的真实删除路径               | 不会有回收站或软删除，也不会因为底层删除失败而让备份重新出现                   |

## 开始之前

- 实例此前保存过至少一次备份策略（哪怕当时是启用状态），数据库里已经有这条策略记录。
- 保留份数大于 0——前端默认值为 7，保存时会拒绝小于等于 0 的输入。
- 从未保存过策略的实例不受清理任务影响，因为清理任务只遍历数据库里已有的策略记录，没有记录就无从清理。

## 配置执行时间与保留份数

1. 打开 **计算 > 实例**，进入目标实例详情的 **备份** 页签，点击定时备份摘要，打开策略弹层。
2. 打开左侧的启用开关。开关打开后，执行时间和保留份数的编辑框才会出现——界面会提示："先启用左侧的定时备份开关，再在这里设置执行计划与保留份数。"这句提示描述的是如何打开编辑入口，与旧备份是否会被清理无关。
3. 设置每天执行时间和保留份数。策略摘要会随之更新为类似"每天 03:00 · 保留 7 份"的格式。
4. 点击 **保存策略**。弹层会显示更新后的下次执行时间，作为本次保存已生效的确认。

## 关闭定时备份

> [!CAUTION]
> 这一步只会停止产生新的自动备份。它不会清空已保存的保留份数，也不会暂停清理任务——已有的旧备份仍会按保留份数继续被自动删除。

1. 在同一个策略弹层，关闭左侧的启用开关。
2. 执行时间和保留份数的编辑框会随之隐藏，但之前保存的保留份数仍在数据库里生效，不会被清空或重置。
3. 点击 **保存策略**。策略摘要变为"未启用"，但这只影响是否继续产生新备份，不影响已有备份的清理。

_界面示意图：定时备份策略弹层的关闭状态：启用开关处于关闭、隐藏的执行时间与保留份数编辑框、策略摘要显示未启用_

## 定时任务的实际节奏

设置的执行时间和实际触发时间对不上，通常是因为背后其实是两个独立节奏的定时任务，而不是同一个：

| 任务         | 频率           | 判断依据                               | 是否检查开关状态                 |
| ------------ | -------------- | -------------------------------------- | -------------------------------- |
| 新备份扫描   | 每 5 分钟一次  | 到期（下次执行时间已到）且已启用的策略 | 是——只处理启用状态的策略         |
| 保留份数清理 | 每 15 分钟一次 | 该实例已完成的备份数量是否超过保留份数 | 否——遍历全部策略，不检查开关状态 |

设置的"每天执行时间"决定的是目标时刻，真正触发要等下一次 5 分钟扫描发现"已到期"，所以实际创建时间可能比设置时间晚数分钟。保留份数清理是完全独立的 15 分钟节奏，与设置的执行时间无关，也不受开关状态影响，会一直运行到备份数量降到保留份数以内为止。

## 如果你想真正保留某份备份

关闭定时备份开关不能保护任何一份备份。真正能阻止某份备份被清理的方法只有两种：

- 提高保留份数，让该实例已完成的备份数量不再超过上限。
- 把想保留的备份转换为自定义镜像。转换完成后，该备份会从备份列表中移除，并作为自定义镜像显示，不再受保留份数清理管辖；底层数据不会被复制，存储用量不会增加。

> [!WARNING]
> 一旦某份备份被清理任务选中并进入删除流程，就无法中止，也没有二次确认弹窗。想保留哪份，要在它被选中之前完成上述操作。

## 相关文档

- [备份概览](/zh-cn/storage/backups/)
- [创建备份](/zh-cn/storage/backups/create/)
- [将备份转换为自定义镜像](/zh-cn/storage/backups/convert/)
- [从备份恢复实例](/zh-cn/storage/backups/restore/)
