
# 快照

快照会捕获沙盒的一个恢复点。

```bash
wp rudel snapshot alpha-3be7 --name=before-test
```

恢复快照：

```bash
wp rudel restore alpha-3be7 --snapshot=before-test
```

`restore`会请求确认；`--force`会跳过提示。快照名称最多包含 64 个字母、数字、点、短横线或下划线，并且必须以字母或数字开头。

快照用于恢复沙盒，不用于确定运行时身份。环境记录仍是沙盒的事实来源。

## 快照包含的内容

- 所有带有沙盒前缀的表（包括用户）都会在同一数据库中复制到`{sandbox_prefix}snap_{hash}_`下，例如`wp_b65338d_snap_3ba676_options`
- 沙盒主题目录会复制到沙盒目录中的`snapshots/{name}/themes`
- `snapshots/{name}/snapshot.json`和`snapshots/{name}/db_snapshot.json`中的元数据

因此，创建快照需要在主机数据库中完整复制沙盒表，并复制主题文件。

## 快照不包含的内容

- 主机WordPress核心文件
- 共享插件文件
- 共享上传文件

## 还原

恢复操作会删除沙盒表（保留快照表），将快照表复制回来，并用保存的副本替换沙盒主题目录。

默认情况下，Rudel会先将当前状态保存为名为`pre-restore-{timestamp}-{hash}`的快照，以便撤销恢复操作。在`rudel_config`中将`auto_snapshot_before_restore`设为`0`即可关闭此功能。

## 列出和移除

没有用于列出或删除快照的CLI命令。在PHP中，`Rudel::snapshots( $id )`会按从新到旧的顺序列出快照。销毁沙盒时会删除快照表；在此之前它们会一直保留，包括自动创建的`pre-restore-*`快照（[问题 #5](https://github.com/inline0/rudel/issues/5)）。
