
# Snapshots

Les snapshots enregistrent un point de récupération de la sandbox.

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

Restaurer un snapshot :

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

`restore` demande une confirmation ; `--force` ignore l’invite. Les noms de snapshot peuvent comporter jusqu’à 64 lettres, chiffres, points, tirets ou traits de soulignement, et doivent commencer par une lettre ou un chiffre.

Les snapshots servent à récupérer une sandbox, pas à définir son identité d’exécution. L’enregistrement d’environnement reste la source de référence pour la sandbox.

## Contenu des snapshots

- toutes les tables portant le préfixe de la sandbox, y compris celles des utilisateurs, sont copiées dans la même base de données sous `{sandbox_prefix}snap_{hash}_`, par exemple `wp_b65338d_snap_3ba676_options`
- le répertoire du thème de la sandbox est copié vers `snapshots/{name}/themes` dans le répertoire de la sandbox
- les métadonnées de `snapshots/{name}/snapshot.json` et `snapshots/{name}/db_snapshot.json`

Un snapshot nécessite donc une copie complète des tables de la sandbox dans la base de données de l’hôte, ainsi qu’une copie des fichiers du thème.

## Éléments absents des snapshots

- le noyau WordPress de l’hôte
- les fichiers partagés des extensions
- les fichiers partagés des téléversements

## Restaurer

La restauration supprime les tables de la sandbox (tout en conservant celles du snapshot), recopie les tables du snapshot et remplace le répertoire du thème de la sandbox par la copie enregistrée.

Par défaut, Rudel enregistre d’abord l’état actuel dans un snapshot nommé `pre-restore-{timestamp}-{hash}` afin de pouvoir annuler une restauration. Définissez `auto_snapshot_before_restore` sur `0` dans `rudel_config` pour désactiver cette option.

## Lister et supprimer

Il n’existe aucune commande CLI pour lister ou supprimer des snapshots. Depuis PHP, `Rudel::snapshots( $id )` les liste, du plus récent au plus ancien. Les tables de snapshots sont supprimées à la destruction de la sandbox ; jusque-là, elles sont conservées, y compris celles créées automatiquement par `pre-restore-*` ([issue #5](https://github.com/inline0/rudel/issues/5)).
