> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 백업 및 복원

> ipmideck의 데이터 디렉터리 (구성, 데이터베이스, 암호화 키)를 백업하고 이동 또는 재구축 후에 복원합니다.

ipmideck가 기억하는 모든 것은 하나의 데이터 디렉터리에 있습니다. `config.yaml`, 서버와
센서 기록이 담긴 SQLite 데이터베이스 (`ipmideck.db`), 그리고 저장된 BMC 자격 증명을 복호화하는
`encryption.key` 파일입니다. 이것들을 백업하면 어디서든 ipmideck를 재구축할 수 있습니다.

<Warning>
  `encryption.key`가 백업의 일부인 데는 이유가 있습니다. 그것이 없으면 복원된 BMC
  사용자 이름과 비밀번호를 복호화할 수 없습니다. 데이터베이스만의 백업은 저장된 자격 증명을
  읽을 수 없게 두므로, 키 파일을 데이터베이스만큼 안전하게 보관하세요.
</Warning>

## 백업에 들어 있는 것

| 파일               | 담긴 내용                          |
| ---------------- | ------------------------------ |
| `ipmideck.db`    | 서버, 사용자, 센서 기록, 명령 로그, 설정.     |
| `config.yaml`    | 서버 바인드, auth, IPMI, 로깅, 모듈 설정. |
| `encryption.key` | 저장된 BMC 자격 증명을 복호화하는 32바이트 키.  |

이것들은 모두 [데이터 디렉터리](/ko/configuration#구성이-위치하는-곳)에 있습니다. Docker와 Linux에서는
`/data`, Windows에서는 `./data`, 또는 `IPMIDECK_DATA_DIR`이 가리키는 곳입니다.

## 옵션 A: 앱 내 백업

ipmideck는 완성된 백업을 넘겨줄 수 있습니다. 웹 UI에서 **Settings**를 열고 백업 작업을
사용하세요. 위의 세 파일을 담은 `ipmideck-backup-<timestamp>.zip`을 다운로드합니다.
데이터베이스가 먼저 체크포인트되므로, 스냅샷에는 가장 최근의 판독값이 포함됩니다.

복원하려면 동일한 **Settings** 화면에서 그 zip을 업로드합니다. ipmideck는 그것을 검증하고,
파일을 스테이징하고, 다음 시작 시에 적용하므로, **복원을 완료하려면 ipmideck를 재시작**하세요.

## 옵션 B: 데이터 디렉터리 복사

전체 상태가 단지 파일이므로, ipmideck가 중지된 동안 데이터 디렉터리를 복사하여
백업할 수도 있습니다.

<CodeGroup>
  ```bash bash theme={null}
  # stop ipmideck first, then:
  cp -r /data /data-backup-$(date +%Y%m%d)
  ```

  ```powershell PowerShell theme={null}
  # stop ipmideck first, then:
  Copy-Item -Recurse .\data ".\data-backup-$(Get-Date -Format yyyyMMdd)"
  ```
</CodeGroup>

Docker에서 데이터는 `/data`에 마운트한 볼륨에 있으므로, 그 볼륨을 백업하세요.
복원은 그 반대입니다. ipmideck를 중지하고, 파일을 데이터 디렉터리에 되돌려 놓고,
다시 시작합니다.

<Note>
  파일 수준 복사 전에 ipmideck를 중지하세요. 데이터베이스는 WAL 모드에서 실행되므로, 앱이
  쓰는 동안 복사하면 일관성 없는 스냅샷을 캡처할 수 있습니다. 앱 내 백업은 먼저 체크포인트를
  수행하여 이를 방지합니다.
</Note>

## 다음 단계

* [구성](/ko/configuration): 데이터 디렉터리의 위치와 `config.yaml`이 담는 것.
* [ipmideck 업데이트](/ko/updating): 데이터는 업그레이드를 견뎌냅니다.
* [보안](/ko/security): 자격 증명이 저장 시 어떻게 암호화되는지.
