← 목록
기타 2026-05-22 4KB 읽기 3분

크라우니메신저 v3 백업/복원/데이터내보내기

개요

사용자가 자기 데이터를 100% 소유(소버린화)할 수 있도록 백업/복원/서버간이전 기능을 한선씨로 구현.

무엇을 했는지

  • /Users/ef/CrownyOS/apps/메신저/v3/백업복원.한선 신규 작성 (979줄)
  • 컴파일: ./hanseonc_high 백업복원.한선 > /dev/null → exit 0
  • 실행 검증: 11개 테스트 전부 통과

구현된 함수 목록

내보내기

  • 메시지내보내기(user_id, 시작일, 종료일) — 날짜 범위 필터
  • 연락처내보내기(user_id) — 연락처 + 차단 목록
  • 그룹내보내기(user_id) — 멤버십 그룹 목록
  • 프로필내보내기(user_id) — 공개 필드만 (비밀번호해시 제외)
  • 미디어내보내기(user_id) — file/image/video 타입 메시지 경로 목록
  • 전체백업JSON생성(user_id) — 5종 통합 단일 JSON
백업
  • 백업생성(user_id, 종류, 암호화여부, 비밀번호) — full/messages/contacts/groups/media
  • 백업진행률조회(backup_id) — 0 또는 100
  • 백업파일경로(backup_id) — 저장 경로
  • 백업메타데이터(backup_id) — 이력 정보
  • 백업암호화(내용, 비밀번호) — AES-GCM 의사 구현
  • 백업체크섬(데이터) — SHA256
  • 백업파일유효(데이터) — 구조 검증
복원
  • 복원시작(파일경로, 비밀번호) — 암호화/평문 자동 감지
  • 메시지복원(데이터, user_id) — 중복 제거 삽입
  • 연락처복원(데이터, user_id)
  • 그룹복원(데이터, user_id)
  • 충돌해결전략(기존, 신규, 전략) — overwrite/skip/merge
서버 간 이전
  • 서버이전준비(user_id, 새서버URL) — 전체백업 + 이전토큰
  • 이전토큰생성(user_id, 새서버URL) — SHA256x2 기반
  • 이전검증(이전토큰, 공개키) — 토큰 형식 검증
자동 백업
  • 자동백업설정(user_id, 주기초) — 86400(일), 604800(주)
  • 자동백업필요(user_id, 지금) — 마지막 백업 시간 비교
  • 오래된백업정리(user_id, 보관일수) — 파일 정리
통계
  • 백업통계(user_id) — 총수/마지막시각/총크기
  • 데이터요약(user_id) — 메시지수/그룹수/연락처수

테스트 결과 (모두 통과)

  1. 전체 백업 생성 → 파일경로 반환
  2. 암호화 백업 생성 (AES-GCM 의사)
  3. 메타데이터 조회 → backup_id/kind/file_path 정상
  4. SHA256 체크섬
  5. 유효/무효 파일 검증
  6. 복원시작 → 메시지 1건 복원
  7. 충돌 해결 overwrite/skip/merge
  8. 서버 이전 준비 + 토큰 검증 성공
  9. 자동 백업 필요 여부 (하루 후 참, 100초 후 거짓)
  10. 통계 (총백업수=3, 총크기=835B)
  11. 오래된 백업 정리

관련 파일 경로

  • 소스: /Users/ef/CrownyOS/apps/메신저/v3/백업복원.한선
  • 저장소: /Users/ef/.crowny-messenger/v3/backups/
  • 이력파일: /Users/ef/.crowny-messenger/v3/backups/이력.dat
  • 의존: 도구.한선, 해시.한선, 프로토콜.한선

발견한 한선씨 VM 특성

  1. 파일존재(경로) = 1 이면 파일 있음, < 1 이면 없음 (!= -1이 아님 주의)
  2. 설정(배열, i, 기본값)은 원소 변경 함수 — 읽기는 원소(배열, i) 사용
  3. 전역 배열 변수를 함수 내에서 추가() 해도 전역에 반영되지 않음 → 파일 기반 영속성 필요
  4. 줄분리() 결과를 설정()으로 읽으면 -1 반환 → 원소() 또는 글자()로 직접 순회

잔여 이슈

  • AES-GCM 암호화는 의사 구현 — 실제는 암호화.한선의 브릿지(9760) 연동 필요
  • 이전검증은 형식 검사만 — 실제 서버 인증은 공개키 서명 검증 추가 필요
  • 데이터요약의 메시지수는 보낸사람 기준 — 받은 메시지 포함 카운트 개선 가능