구글 드라이브 및 저장 환경
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: 백업 파일 목록, 파일 크기, 해시, 전체 용량, digestproject-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 데스크톱 앱의 동기화 상태에 영향을 받습니다. 다른 기기에서 복원하기 전에는 동기화 완료 수가 전체 파일/용량과 일치하는지 확인한 뒤 복원하는 것이 안전합니다.