요약
- ICS(.ics) - 일정 데이터의 표준 교환 형식 (RFC 5545). 다른 캘린더 앱과 호환됩니다.
- 설정 백업(.sdpb) - AES-256-GCM으로 암호화된 환경설정 백업. 다른 PC로 옮길 수 있습니다.
- 자동 DB 백업 - 마이그레이션·중요 변경 시 SQLite DB와 JSON을 타임스탬프 디렉토리에 자동 보관 (최근 5개 유지).
- 다른 PC로 이동 - 토큰은 디바이스에 묶여 있으므로 단순 복사가 아닌 백업 절차가 필요합니다.
Sudapapa Diary는 사용자 데이터의 자유로운 이동을 보장하기 위해 ICS 표준 가져오기·내보내기, 암호화 설정 백업, 자동 데이터베이스 백업 등 다양한 데이터 이동성 기능을 제공합니다. 데이터는 사용자의 PC에만 저장되므로, 다른 기기로 옮기거나 장기 보관하려면 이 문서의 절차를 사용하세요.
요약
icsExporter.js는 내부 일정을 RFC 5545 표준 ICS 파일로 변환합니다. ical.js를 사용해 표준을 정확히 따르므로, Google Calendar / Microsoft Outlook / Apple Calendar 등 대부분의 앱에서 그대로 가져올 수 있습니다.
.ics 파일로 저장| ICS 속성 | 매핑 |
|---|---|
SUMMARY | 제목 |
DESCRIPTION | 설명 |
LOCATION | 위치 |
DTSTART / DTEND | 시작/종료 (날짜 또는 날짜+시간) |
STATUS | confirmed/tentative/cancelled |
UID | 내부 ID 또는 외부 제공자 ID |
PRODID | -//Sudapapa Diary//Calendar//EN |
icsParser.js는 외부 ICS 파일을 읽어 내부 형식으로 변환합니다.
.ics 파일을 선택 (또는 드래그&드롭)X-WR-CALNAME 또는 “가져온 캘린더”로 자동 명명)DTSTART가 VALUE=DATE인 일정은 종일 일정(is_all_day=1)으로 저장됩니다.X-APPLE-CALENDAR-COLOR 또는 기본값(#3b82f6) 사용VALARM)은 가능한 한 보존되며, 지원하지 않는 형식은 무시됩니다.도구 메뉴의 여러 ICS 일괄 가져오기로 여러 파일을 동시에 처리할 수 있습니다. 각 파일의 캘린더 이름이 그대로 새 캘린더로 만들어집니다.
settingsBackup.js는 환경설정·위젯 레이아웃·알람 등을 단일 암호화 파일(.sdpb)로 묶어주는 기능입니다.
| 항목 | 값 |
|---|---|
| 알고리즘 | AES-256-GCM |
| 키 파생 | PBKDF2 (SHA-256, 100,000회) |
| 솔트 | 32바이트 무작위 |
| IV | 16바이트 무작위 |
| 인증 태그 | 16바이트 |
| 매직 바이트 | SDPB (SuDaPaPa Backup) |
| 항목 | 사유 |
|---|---|
| OAuth 토큰 (Google/Microsoft/Naver) | 디바이스 키로 암호화되어 다른 PC에서 복호화 불가 |
| 디바이스 ID | 디바이스 단위로 새로 생성됨 |
| 임시 캐시 | 다음 동기화에 자동 재구성 |
.sdpb 파일과 비밀번호 입력backup.js는 다음 시점에 자동으로 백업을 생성합니다.
| 시점 | 종류 | 위치 |
|---|---|---|
| 마이그레이션 직전 | migration-backup-* | Configurations/Backups/ |
| 사용자 수동 트리거 | json-backup-* 또는 db-backup-* | 동일 |
| 정기 일정 (옵션) | db-backup-* | 동일 |
%AppData%/../sudapapadiary/Configurations/Backups/├── migration-backup-2026-04-21T10-30-00/│ ├── Connections/│ ├── Calendars/│ ├── Passwords/│ └── Defaults/├── db-backup-2026-04-25T08-00-00/│ └── sudapapa.db└── json-backup-2026-04-26T12-15-00/ └── ...각 백업 종류별로 최근 5개만 유지하고 오래된 백업은 자동 삭제됩니다(maxBackups = 5). 디스크 용량 사용을 일정하게 유지하면서도 최근 변경에 대한 안전망을 제공합니다.
긴급 복구가 필요하다면 백업 디렉토리에서 직접 복원할 수도 있습니다.
Configurations/Database/sudapapa.db를 별도 위치로 옮겨 임시 보관db-backup-*/sudapapa.db를 원래 위치로 복사DataMigration.js는 구버전 JSON 저장소에서 SQLite로 데이터를 자동 마이그레이션합니다. 사용자 동작은 필요 없으며, 다음 단계로 안전하게 처리됩니다.
원본 JSON 파일이 그대로 남아 있으므로, 마이그레이션이 실패해도 데이터 손실 없이 이전 버전으로 되돌릴 수 있습니다.
데이터를 다른 PC로 이전하는 권장 흐름입니다.
.sdpb 파일을 USB/클라우드 드라이브로 옮김.sdpb 파일 + 비밀번호 입력음력·반복 등 표준에 없는 정보는 손실될 수 있습니다.
Configurations/ 폴더를 그대로 복사하면 토큰·암호가 디바이스 키 차이로 복호화되지 않아 일정이 깨질 수 있습니다. 가능한 한 백업 파일 방식을 사용하세요.
비밀번호 매니저 데이터, OAuth 토큰, 일부 민감 설정은 디바이스마다 다른 암호화 키로 보호됩니다(encryption.js).
| 항목 | 디바이스 키 의존 | 백업 파일에 포함 |
|---|---|---|
| 일반 환경설정 | ❌ | ✅ |
| 시계 알람 | ❌ | ✅ |
| 일정 / 메모 | ❌ | ✅ (선택) |
| 비밀번호 매니저 항목 | ✅ | 마스터 비번 입력 시 ✅ |
| OAuth 토큰 | ✅ | ❌ |
따라서 다른 PC로 옮길 때 비밀번호 매니저 항목은 백업 비밀번호와 별개로 마스터 비밀번호를 한 번 더 요구할 수 있습니다.
| 사용 패턴 | 권장 주기 |
|---|---|
| 매일 일정 변경 많음 | 주 1회 설정 백업 + 매월 1회 외부 저장 |
| 일정 변경 드묾 | 월 1회 설정 백업 |
| 중요한 변경 직후 | 즉시 1회 추가 백업 |
| OS 재설치/PC 교체 직전 | 반드시 백업 후 복원 |
자동 DB 백업은 항상 작동하지만, 수동 설정 백업은 PC 외부(다른 디스크/클라우드)에 보관해야 디스크 장애 시에도 복구할 수 있습니다.
| 증상 | 해결 |
|---|---|
| ICS 내보내기 시 글자가 깨짐 | UTF-8 인코딩으로 저장됨 - 가져오는 앱이 UTF-8을 지원하는지 확인 |
| 가져오기 후 시간이 1시간 어긋남 | 시스템 시간대 또는 일광절약시간 차이 - Windows 시간대를 자동 설정으로 변경 |
| 백업 복원 시 “잘못된 비밀번호” | PBKDF2 인증 태그 검증 실패 - 비밀번호를 다시 확인 (대소문자 포함) |
| 백업 파일이 너무 큼 | 메모/비밀번호 등 선택 항목을 줄이거나, ICS와 설정 백업을 분리 |
| 자동 백업이 보이지 않음 | %AppData%/../sudapapadiary/Configurations/Backups/를 확인 |
| 마이그레이션 후 일정이 안 보임 | migration-status.json 확인 후 자동 백업에서 복원 |