
# Snapshots

Snapshots speichern einen Wiederherstellungspunkt einer Sandbox.

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

Stelle einen Snapshot wieder her:

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

`restore` fordert eine Bestätigung an; `--force` überspringt die Abfrage. Snapshot-Namen dürfen bis zu 64 Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche enthalten und müssen mit einem Buchstaben oder einer Ziffer beginnen.

Snapshots dienen der Wiederherstellung einer Sandbox, nicht ihrer Laufzeitidentität. Der Umgebungsdatensatz bleibt die maßgebliche Quelle für die Sandbox.

## Was Snapshots erfassen

- jede Tabelle mit dem Sandbox-Präfix, einschließlich Benutzer, wird in derselben Datenbank unter `{sandbox_prefix}snap_{hash}_` kopiert, zum Beispiel `wp_b65338d_snap_3ba676_options`
- das Theme-Verzeichnis der Sandbox wird nach `snapshots/{name}/themes` im Sandbox-Verzeichnis kopiert
- Metadaten in `snapshots/{name}/snapshot.json` und `snapshots/{name}/db_snapshot.json`

Ein Snapshot benötigt daher eine vollständige Kopie der Sandbox-Tabellen in der Host-Datenbank sowie eine Kopie der Theme-Dateien.

## Was Snapshots nicht erfassen

- den Host-WordPress-Core
- gemeinsam genutzte Plugin-Dateien
- gemeinsam genutzte Uploads

## Restore

Beim Wiederherstellen werden die Sandbox-Tabellen gelöscht (Snapshot-Tabellen bleiben erhalten), die Snapshot-Tabellen zurückkopiert und das Theme-Verzeichnis der Sandbox durch die gespeicherte Kopie ersetzt.

Standardmäßig speichert Rudel zuerst den aktuellen Zustand in einem Snapshot namens `pre-restore-{timestamp}-{hash}`, damit sich eine Wiederherstellung rückgängig machen lässt. Setze `auto_snapshot_before_restore` in `rudel_config` auf `0`, um diese Funktion zu deaktivieren.

## Auflisten und Entfernen

Es gibt keinen CLI-Befehl zum Auflisten oder Löschen von Snapshots. Über PHP listet `Rudel::snapshots( $id )` sie auf, beginnend mit dem neuesten. Beim Löschen der Sandbox werden die Snapshot-Tabellen gelöscht; bis dahin bleiben sie erhalten, einschließlich der automatisch erstellten Snapshots `pre-restore-*` ([Issue #5](https://github.com/inline0/rudel/issues/5)).
