My App
환경설정

구글 드라이브 및 저장 환경

Yuli 내에서 작품 데이터를 관리하고 Google Drive로 백업/복원하는 방식을 설명합니다.

구글 드라이브 및 저장 환경

Yuli의 작품 데이터는 기본적으로 사용자의 PC에 저장됩니다. Google Drive는 서버 저장소가 아니라, 사용자가 지정한 동기화 폴더에 작품 단위 백업을 만들어 두는 방식으로 사용됩니다.

로컬 저장 기준

  • 프로그램 내 작품 데이터는 Yuli 서버에 저장되지 않습니다.
  • 윈도우 기준 로컬 저장 위치는 %APPDATA%\Yuli입니다.
  • 서버에 저장되는 데이터는 구글 로그인 등 계정 기능에 필요한 회원 정보로 제한됩니다.
  • 작품 본문, 프로필, 에셋, 설정, 프로젝트 매니저 메타는 기기 로컬 저장소에 먼저 저장됩니다.
  • Google Drive를 연결하면 로컬에 저장된 현재 작품을 사용자가 지정한 Drive 동기화 폴더로 백업합니다.

설정 위치

환경설정 > 클라우드에서 Google Drive 백업을 관리합니다.

  • 백업 경로: 선택한 Drive 동기화 폴더를 breadcrumb 형태로 표시합니다. 예: Google Drive > YuliBackup
  • 변경: 백업 기준 폴더를 다시 선택합니다.
  • 해제: Drive 백업 경로를 비웁니다.
  • 자동 백업: 백업 주기를 선택합니다.
  • 즉시 백업: 현재 열려 있는 작품을 바로 백업합니다.
  • 마지막 백업: 현재 작품의 마지막 Drive 백업 시각을 표시합니다.
  • 백업 파일 수: 현재 작품 백업의 파일 수와 용량을 표시합니다.
  • 복원 가능한 작품: Drive에서 발견된 작품 수를 표시합니다.
  • 동기화 완료: Drive 백업 중 실제로 로컬에 내려와 복원 가능한 작품 수를 표시합니다.
  • Drive 복원 열기: Drive에 있는 작품을 기존 작품에 덮어쓰거나 새 작품으로 가져오는 복원 창을 엽니다.

자동 백업 주기

자동 백업 주기는 선택형입니다.

  • 5분
  • 10분
  • 20분
  • 30분
  • 1시간
  • 2시간
  • 3시간
  • 4시간
  • 6시간

자동 백업은 앱이 실행 중이고 Drive 경로가 설정되어 있을 때 동작합니다. 백업 대상은 “현재 열려 있는 작품”입니다. 작품을 전환하면 이후 백업은 새로 열려 있는 작품을 기준으로 진행됩니다.

복원 중이거나 프로젝트 전환/초기화로 저장이 잠겨 있는 동안에는 자동 백업을 실행하지 않습니다. 이 경우 앱은 다음 가능한 시점에 다시 백업을 예약합니다.

Google Drive 백업 단위

  • Google Drive 백업 및 복원은 프로그램 전체가 아니라 작품 단위로 이루어집니다.
  • 전체 workspace를 통째로 동기화하지 않습니다.
  • 사용자가 선택한 폴더 아래에 YuliBackup 폴더가 만들어지고, 그 안에 작품별 백업이 저장됩니다.
  • 각 작품은 projects/<projectId>/current 단일 슬롯을 사용합니다.
  • 같은 작품을 여러 번 백업하면 과거 백업을 계속 쌓지 않고 current 슬롯을 최신 상태로 교체합니다.
  • 백업에는 작품 저장 데이터, 백업 manifest, 프로젝트 메타, 커버 미리보기가 포함될 수 있습니다.

백업 구조의 핵심 파일은 다음과 같습니다.

  • local-yuli-storage: 작품의 실제 저장 데이터
  • snapshot-manifest.json: 백업 파일 목록, 파일 크기, 해시, 전체 용량, digest
  • project-meta.json: 작품 제목, slug, 백업 시각, 프로젝트 매니저 메타
  • cover-preview.webp: 복원 목록에 표시하기 위한 커버 미리보기
  • index.json: Drive 백업 목록을 빠르게 표시하기 위한 색인

Drive 동기화 완료 기준

Google Drive 데스크톱 앱은 큰 폴더를 한 번에 내려받지 않고 순차적으로 동기화할 수 있습니다. 그래서 Yuli는 복원 전에 백업이 실제로 모두 내려왔는지 확인합니다.

  • snapshot-manifest.json에 기록된 파일 목록을 기준으로 확인합니다.
  • 각 파일이 로컬 Drive 폴더에 존재하는지 확인합니다.
  • 파일 크기가 manifest와 일치하는지 확인합니다.
  • 동기화 완료 수와 전체 파일/용량을 복원 창과 클라우드 설정 요약에 표시합니다.
  • 동기화가 끝나지 않은 작품은 복원 버튼이 비활성화됩니다.

복원을 시작한 뒤에도 한 번 더 검증합니다.

  • 누락 파일이 있으면 복원을 중단합니다.
  • 파일 크기가 맞지 않으면 복원을 중단합니다.
  • manifest digest가 맞지 않으면 복원을 중단합니다.
  • 이 경우 기존 로컬 작품 데이터는 덮어쓰지 않고 보존됩니다.

복원 방식

Drive 복원 창에서는 작품별로 두 가지 동작을 할 수 있습니다.

  • 덮어쓰기 복원: 이미 PC에 있는 같은 작품 ID의 데이터를 Drive 백업으로 교체합니다.
  • 새 작품으로 가져오기: PC에 없는 작품을 Drive 백업에서 새 작품으로 생성합니다.

복원 창은 프로젝트 매니저와 환경설정 > 클라우드 양쪽에서 열 수 있습니다. 실제 복원 작업은 Main 프로세스가 처리하며, 복원 중에는 진행 단계와 파일/용량 진행률이 표시됩니다.

기존 작품에 복원할 때

기존 작품에 덮어쓰기 복원을 하면 다음이 적용됩니다.

  • 작품의 저장 데이터는 Drive 백업 내용으로 교체됩니다.
  • 프로젝트 매니저의 상태, 진행률, 커버 정보는 백업 메타를 반영합니다.
  • 기존 작품이 현재 어느 Hall 또는 Masterpiece에 놓여 있는지는 유지됩니다.
  • 복원 후 manifest digest를 다시 검증합니다.

즉, “작품 내용과 일부 표시 메타”는 Drive 백업을 따르고, “현재 PC에서의 배치 위치”는 유지됩니다.

새 작품으로 가져올 때

새 작품으로 가져오면 다음이 적용됩니다.

  • Drive 백업의 작품 ID로 새 로컬 작품을 생성합니다.
  • 복원 창에서 선택한 Hall 또는 Masterpiece 위치에 배치합니다.
  • 선택한 위치 안에서 새 작품은 맨 앞 순서로 들어갑니다.
  • 같은 위치의 기존 작품들은 뒤로 재정렬됩니다.
  • 상태, 진행률, 커버 정보는 백업 메타를 반영합니다.
  • 복원 후 manifest digest를 다시 검증합니다.

프로젝트 매니저 배치 정보

프로젝트 매니저의 전시 위치는 현재 placement 값으로 저장됩니다.

  • 일반 Hall: { type: "hall", hall: 1 }
  • Masterpiece: { type: "special", key: "masterpiece" }

이전 개발/beta 데이터에서 사용되던 숫자 hall 값은 현재 앱에서 읽을 때 정규화됩니다. 특히 과거 Masterpiece용 hall: 999 값은 현재 앱에서 Masterpiece placement로 해석됩니다.

새로 저장되는 프로젝트 메타와 Google Drive 백업 메타에는 숫자 999 sentinel을 다시 기록하지 않습니다.

Drive 백업과 workspace.json의 관계

workspace.json은 프로젝트 목록과 앱 전역 UI 상태를 담는 파일입니다. 반면 Drive 백업은 작품별 데이터를 project.json/프로젝트 메타와 함께 보존하는 구조입니다.

현재 구조에서 중요한 기준은 다음과 같습니다.

  • 작품의 핵심 데이터는 작품 단위 저장소에 있습니다.
  • 프로젝트 매니저의 핵심 메타는 작품 메타에 저장됩니다.
  • Drive 백업은 작품 단위로 생성되고 복원됩니다.
  • workspace.json이 일부 손상되더라도 작품 폴더와 프로젝트 메타를 기준으로 프로젝트 목록을 다시 구성할 수 있습니다.

다만 Drive 백업은 Google Drive 데스크톱 앱의 동기화 상태에 영향을 받습니다. 다른 기기에서 복원하기 전에는 동기화 완료 수가 전체 파일/용량과 일치하는지 확인한 뒤 복원하는 것이 안전합니다.

On this page