1. 백업 기능 활성화 설정
코드 저장소의 데이터 무결성을 유지하기 위해서는 먼저 CodeUp 관리 콘솔의 전역 설정 (Global Settings) 영역으로 이동합니다. 해당 메뉴에서 자동화된 코드 백업 정책을 켜고 저장 기간이나 빈도를 요구사항에 맞게 구성해야 합니다.
2. 백업 아티팩트 구조 이해
설정 완료 후 생성되는 백업 파일들은 OSS(Object Storage Service) 버킷에 저장됩니다. 로컬 환경에서는 oss-browser, ossutil 등 표준 도구를 사용하여 파일을 추출할 수 있습니다. 이때 파일명 패턴을 잘 구분해야 복원이 가능합니다:
- Full Backup: 이름에
full이 포함되며 특정 시점의 완전한 상태를 담고 있습니다. - Incremental Backup:
inc또는 유사한 접미사와 함께 숫자가 붙어 있으며, 이전 풀 상태 이후 변경된 데이터를 순차적으로 저장합니다.
로컬 머신에는 반드시 Git 명령어 환경이 설치되어 있어야 합니다.
3. 전체 데이터 복원 (Full Restore)
가장 간단한 시나리오는 마지막 전체 백업 시점으로 시스템을 되돌리는 경우입니다. 특정 날짜의 풀 번들 파일 하나만 있으면 복구가 가능합니다.
$ git clone my-project-base-complete-20250115.bundle ./restored-workspace
Cloning into 'restored-workspace'...
Enumerating objects: 25000, done.
Counting objects: 100% (25000/25000), done.
Delta compression using up to 12 threads.
Compressing objects: 100% (8000/8000), done.
Writing objects: 100% (25000/25000), 45.2 MiB | 28.5 MiB/s, done.
Resolving deltas: 100% (5200/5200), done.
4. 증분 백업을 통한 시계열 복원
특정 중간 시점을 복구하려면 최근 전체 백업 파일과 그 이후 발생된 모든 증분 파일들을 순서대로 적용해야 합니다. 아래 예시는 1 월 말 기준으로 12 월 풀 백업과 3 회분의 증분 파일을 합쳐 최신 상태로 만드는 과정을 보여줍니다.
$ ls
-rw-r--r-- 1 root root 38120450 Feb 10 10:00 proj-alpha-full-20241201.gitbundle
-rw-r--r-- 1 root root 1024356 Feb 10 10:05 proj-alpha-inc-01-20250105.gitbundle
-rw-r--r-- 1 root root 1560902 Feb 10 10:08 proj-alpha-inc-02-20250112.gitbundle
-rw-r--r-- 1 root root 420110 Feb 10 10:11 proj-alpha-inc-03-20250119.gitbundle
# 1 단계: 베이스인 전체 백업 클론
$ git clone proj-alpha-full-20241201.gitbundle work-area
$ cd work-area
# 2 단계: 첫 번째 증분 스킴 추가
$ git remote add delta-01 ../proj-alpha-inc-01-20250105.gitbundle
$ git fetch delta-01
From ../proj-alpha-inc-01-20250105.gitbundle
* [new ref] feature/auth -> delta-01/feature/auth
* [new ref] main -> delta-01/main
# 3 단계: 필요한 브랜치로 이동 및 병합
$ git checkout main
$ git pull delta-01 main
# 4 단계: 두 번째, 세 번째 증분도 동일하게 반복 적용
$ git remote add delta-02 ../proj-alpha-inc-02-20250112.gitbundle
$ git fetch delta-02
$ git pull delta-02 main
5. 복원 로직 의존성 설명
증분 백업은 체인(Chain) 형태의 의존성을 갖습니다. 예를 들어 base, inc-A, inc-B 순서의 백업이 있을 때, inc-B 시점으로 복원하려면 반드시 base 와 inc-A 를 먼저 재구성한 뒤 inc-B 를 적용해야 합니다. 중간 단계를 건너뛰면 참조 관계가 깨져 복원 작업이 실패하며, 이는 Git 델타 계산 방식에 따른 기술적 제약 사항임을 기억하시기 바랍니다.