Snapshots
Les snapshots enregistrent un point de récupération de la sandbox.
wp rudel snapshot alpha-3be7 --name=before-test
Restaurer un snapshot :
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 exemplewp_b65338d_snap_3ba676_options - le répertoire du thème de la sandbox est copié vers
snapshots/{name}/themesdans le répertoire de la sandbox - les métadonnées de
snapshots/{name}/snapshot.jsonetsnapshots/{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).