한 GitLab 인스턴스에서 만든 백업 파일을 다른 GitLab 서버에 복원(추가)할 수 있습니다.
다만 다음 조건과 제약이 있습니다.
버전 일치
복원할 대상 서버의 GitLab 패키지 버전이 백업을 만든 서버와 동일해야 합니다. 버전이 다르면 데이터베이스 구조가 달라져 복원에 실패하거나 손상될 수 있습니다.
전체 복원 방식
GitLab의 gitlab-backup은 “전체 인스턴스” 단위 백업/복원만 지원합니다. 즉, 한 서버에서 A 프로젝트만, B 프로젝트만 골라서 복원하거나 두 개의 백업을 병합해서 복원하는 기능은 없습니다.
- 만약 특정 프로젝트만 옮기고 싶다면, 프로젝트 내보내기/가져오기(export/import) 기능을 쓰셔야 합니다.
전체 백업 복원 절차
아래 예시는 Omnibus 패키지(GitLab CE/EE) 환경을 기준으로 합니다.
- 백업 파일 복사
- 원본 서버에서
/var/opt/gitlab/backups/디렉터리에 있는TIMESTAMP_gitlab_backup.tar파일을 대상 서버로 복사
- 원본 서버에서
scp /var/opt/gitlab/backups/1612345678_2025_04_22_14.0.0_gitlab_backup.tar root@new-server:/var/opt/gitlab/backups/- 대상 서버 버전 확인 및 재설치
- 대상 서버에 원본 서버와 동일한 GitLab 버전을 설치
# 예: GitLab EE 14.0.0 설치
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee=14.0.0-ee.0- GitLab 서비스 중지
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx- 백업 복원 명령 실행
- 복원 도중 데이터베이스 스키마 및 레디스 캐시가 덮어씌워집니다.
- 복원 시
/etc/gitlab/gitlab.rb설정은 보존되므로, 필요한 경우 미리 SSH 키, 레포지토리 경로, TLS 인증서 등을 확인해 두세요.
# 기본적으로 가장 최신 백업 파일을 복원합니다.
sudo gitlab-backup restore BACKUP=1612345678_2025_04_22_14.0.0- 권한 및 설정 재적용
복원이 끝나면
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart명령으로 설정을 재적용하고 서비스를 재시작합니다.
- 접근 테스트
- 웹 브라우저로 접속해 프로젝트, 사용자, 그룹, CI/CD 파이프라인 등이 정상 동작하는지 확인합니다.
프로젝트 단위 데이터 이동 방법
- 프로젝트 Export/Import
- 프로젝트 단위로 이동하고 싶다면, 원본 서버에서 프로젝트 설정 → “Export project”
- 내보낸
.tar.gz파일을 대상 서버 프로젝트 생성 화면에서 “Import project” - 이 경우에는 백업 전체를 덮어쓰지 않고 특정 프로젝트만 선택적으로 가져올 수 있습니다.
요약
- 가능: 전체 인스턴스 백업 → 다른 동일 버전 서버에 복원
- 불가능: 서로 다른 백업을 합쳐서 복원하거나, A 백업 + B 백업 데이터 병합
- 대안: 특정 프로젝트만 옮길 땐 GitLab의 Export/Import 기능 사용
이 절차대로 진행하시면 다른 GitLab 서버에 문제없이 백업 데이터를 복원하실 수 있습니다.