
# Snapshot

Snapshot merekam titik pemulihan sandbox.

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

Pulihkan snapshot:

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

`restore` meminta konfirmasi; `--force` melewati permintaan tersebut. Nama snapshot dapat terdiri dari maksimal 64 huruf, angka, titik, tanda hubung, atau garis bawah, dan harus diawali huruf atau angka.

Snapshot digunakan untuk memulihkan sandbox, bukan untuk identitas runtime. Catatan lingkungan tetap menjadi sumber kebenaran untuk sandbox.

## Yang direkam oleh snapshot

- setiap tabel dengan prefix sandbox, termasuk pengguna, disalin di database yang sama di bawah `{sandbox_prefix}snap_{hash}_`, misalnya `wp_b65338d_snap_3ba676_options`
- direktori tema sandbox, disalin ke `snapshots/{name}/themes` di direktori sandbox
- metadata di `snapshots/{name}/snapshot.json` dan `snapshots/{name}/db_snapshot.json`

Karena itu, snapshot memerlukan salinan lengkap tabel sandbox di database host serta salinan file tema.

## Yang tidak direkam oleh snapshot

- file inti host WordPress
- file plugin bersama
- unggahan bersama

## Restore

Pemulihan menghapus tabel sandbox (dengan tetap menyimpan tabel snapshot), menyalin kembali tabel snapshot, dan mengganti direktori tema sandbox dengan salinan yang tersimpan.

Secara default, Rudel terlebih dahulu menyimpan state saat ini sebagai snapshot bernama `pre-restore-{timestamp}-{hash}`, sehingga pemulihan dapat dibatalkan. Tetapkan `auto_snapshot_before_restore` menjadi `0` di `rudel_config` untuk menonaktifkannya.

## Melihat daftar dan menghapus

Tidak ada perintah CLI untuk melihat daftar atau menghapus snapshot. Dari PHP, `Rudel::snapshots( $id )` menampilkan daftar snapshot, dimulai dari yang terbaru. Tabel snapshot dihapus saat sandbox dihancurkan; sampai saat itu, tabel tetap ada, termasuk snapshot `pre-restore-*` otomatis ([masalah #5](https://github.com/inline0/rudel/issues/5)).
