
# Snapshots

Snapshots leggen een herstelpunt van een sandbox vast.

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

Een snapshot terugzetten:

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

`restore` vraagt om bevestiging; `--force` slaat de prompt over. Snapshotnamen mogen maximaal 64 letters, cijfers, punten, streepjes of underscores bevatten en moeten beginnen met een letter of cijfer.

Snapshots zijn bedoeld voor sandboxherstel, niet voor runtime-identiteit. De omgevingsrecord blijft de bron van waarheid voor de sandbox.

## Wat snapshots vastleggen

- elke tabel met de sandboxprefix, inclusief gebruikers, gekopieerd in dezelfde database onder `{sandbox_prefix}snap_{hash}_`, bijvoorbeeld `wp_b65338d_snap_3ba676_options`
- de themamap van de sandbox, gekopieerd naar `snapshots/{name}/themes` in de sandboxmap
- metadata in `snapshots/{name}/snapshot.json` en `snapshots/{name}/db_snapshot.json`

Een snapshot kost dus een volledige kopie van de sandboxtabellen in de hostdatabase plus een kopie van de themabestanden.

## Wat snapshots niet vastleggen

- de host-WordPress-core
- gedeelde plug-inbestanden
- gedeelde uploads

## Herstellen

Bij het terugzetten worden de sandboxtabellen verwijderd (de snapshottabellen blijven behouden), worden de snapshottabellen teruggekopieerd en wordt de themamap van de sandbox vervangen door de opgeslagen kopie.

Standaard slaat Rudel eerst de huidige status op als snapshot met de naam `pre-restore-{timestamp}-{hash}`, zodat het terugzetten ongedaan kan worden gemaakt. Stel `auto_snapshot_before_restore` in `rudel_config` in op `0` om dit uit te schakelen.

## Overzicht en verwijderen

Er is geen CLI-opdracht om snapshots weer te geven of te verwijderen. Vanuit PHP geeft `Rudel::snapshots( $id )` ze weer, nieuwste eerst. Snapshottabellen worden verwijderd wanneer de sandbox wordt vernietigd; tot die tijd blijven ze bestaan, inclusief de automatische `pre-restore-*`-snapshots ([probleem 5](https://github.com/inline0/rudel/issues/5)).
