
# 스냅샷

스냅샷은 샌드박스의 복구 지점을 저장합니다.

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

스냅샷 복원:

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

`restore`은 확인을 요청하고, `--force`은 확인 절차를 건너뜁니다. 스냅샷 이름은 최대 64자의 영문자, 숫자, 마침표, 대시 또는 밑줄로 구성되며, 영문자나 숫자로 시작해야 합니다.

스냅샷은 샌드박스 복구용이며 런타임 ID를 위한 것이 아닙니다. 환경 기록은 샌드박스의 단일 진실 공급원으로 유지됩니다.

## 스냅샷에 포함되는 항목

- 샌드박스 접두사가 붙은 모든 테이블(사용자 포함)을 같은 데이터베이스의 `{sandbox_prefix}snap_{hash}_` 아래에 복사합니다(예: `wp_b65338d_snap_3ba676_options`)
- 샌드박스 테마 디렉터리를 샌드박스 디렉터리의 `snapshots/{name}/themes`에 복사합니다
- `snapshots/{name}/snapshot.json` 및 `snapshots/{name}/db_snapshot.json`의 메타데이터

따라서 스냅샷을 만들려면 호스트 데이터베이스의 샌드박스 테이블 전체와 테마 파일의 사본이 필요합니다.

## 스냅샷에 포함되지 않는 항목

- 호스트 WordPress 코어
- 공유 플러그인 파일
- 공유 업로드 파일

## 복원

복원하면 스냅샷 테이블은 유지한 채 샌드박스 테이블을 삭제하고, 스냅샷 테이블을 다시 복사한 다음 저장된 사본으로 샌드박스 테마 디렉터리를 교체합니다.

기본적으로 Rudel은 현재 상태를 `pre-restore-{timestamp}-{hash}`이라는 이름의 스냅샷으로 먼저 저장하므로 복원을 되돌릴 수 있습니다. 이 기능을 끄려면 `rudel_config`에서 `auto_snapshot_before_restore`를 `0`으로 설정하세요.

## 목록 보기 및 제거

스냅샷 목록 조회 또는 삭제를 위한 CLI 명령은 없습니다. PHP에서 `Rudel::snapshots( $id )`를 실행하면 최신 항목부터 목록이 표시됩니다. 샌드박스를 제거하면 스냅샷 테이블도 삭제됩니다. 그전까지는 자동 생성된 `pre-restore-*` 스냅샷을 포함해 계속 유지됩니다([이슈 #5](https://github.com/inline0/rudel/issues/5)).
