
# Snapshots

Os snapshots registram um ponto de recuperação do sandbox.

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

Restaure um snapshot:

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

`restore` pede confirmação; `--force` ignora a solicitação. Os nomes dos snapshots podem ter até 64 letras, números, pontos, hífens ou sublinhados, e devem começar com uma letra ou número.

Os snapshots servem para recuperar sandboxes, não para definir a identidade em tempo de execução. O registro do ambiente continua sendo a fonte de verdade do sandbox.

## O que os snapshots capturam

- todas as tabelas com o prefixo do sandbox, incluindo usuários, copiadas no mesmo banco de dados em `{sandbox_prefix}snap_{hash}_`, por exemplo `wp_b65338d_snap_3ba676_options`
- o diretório do tema do sandbox, copiado para `snapshots/{name}/themes` no diretório do sandbox
- metadados em `snapshots/{name}/snapshot.json` e `snapshots/{name}/db_snapshot.json`

Portanto, um snapshot custa uma cópia completa das tabelas do sandbox no banco de dados do host, além de uma cópia dos arquivos do tema.

## O que os snapshots não capturam

- o núcleo do WordPress do host
- arquivos de plugins compartilhados
- arquivos de uploads compartilhados

## Restaurar

Uma restauração exclui as tabelas do sandbox (mantendo as tabelas do snapshot), copia as tabelas do snapshot de volta e substitui o diretório do tema do sandbox pela cópia salva.

Por padrão, Rudel salva primeiro o estado atual como um snapshot chamado `pre-restore-{timestamp}-{hash}`, permitindo desfazer uma restauração. Defina `auto_snapshot_before_restore` como `0` em `rudel_config` para desativar essa opção.

## Listar e remover

Não há um comando CLI para listar ou excluir snapshots. Em PHP, `Rudel::snapshots( $id )` os lista, começando pelos mais recentes. As tabelas dos snapshots são removidas quando o sandbox é destruído; até lá, permanecem, inclusive as criadas automaticamente em `pre-restore-*` ([issue #5](https://github.com/inline0/rudel/issues/5)).
