
# スナップショット

スナップショットはサンドボックスの復旧ポイントを保存します。

```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-*`も含めて保持されます（[issue #5](https://github.com/inline0/rudel/issues/5)）。
