본문 바로가기

Dev/Linux

Gitlab Backup & Restore 방법

Gitlab Backup & Restore 방법

1. Backup 방법

sudo gitlab-rake gitlab:backup:create

백업을 하면 아래 경로에 백업 파일이 생성

  • /var/opt/gitlab/backups/
drwxr-----.  2 git  root      4096 2017-01-06 09:22 .
drwxr-xr-x. 13 root root      4096 2017-01-05 13:39 ..
-rw-------.  1 git  git  732047360 2017-01-06 09:20 1483662009_2017_01_06_gitlab_backup.tar

2. Restore 방법

먼저 2개의 서비스를 중지 시키고 상태를 확인

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status

백업된 파일을 기본 Backup 폴더로 위치

sudo cp 1393513186_2014_02_27_gitlab_backup.tar /var/opt/gitlab/backups/

Restore 명령

sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186_2014_02_27

아래와 같은 에러 발생 (나의 경우)

rake aborted!
TypeError: no implicit conversion of nil into String

근본적인 방법은 아니지만, 백업 파일이 1개인 경우 백업 파일 이름없이 명령을 사용하면 해당 문제는 해결

sudo gitlab-rake gitlab:backup:restore 

위의 경우도 권한의 문제가 발생하니, 백업 파일의 666 이상의 권한과 디렉토리의 777 권한을 설정

기본적으로 git 계정으로 r 권한만 설정 되어 있음

sudo chmod 777 /var/opt/gitlab/backups/
sudo chmod 666 /var/opt/gitlab/backups/*

성공적으로 진행 되면 모든 데이터가 삭제 된다고 묻는 내용이 나오고 yes 키인하면 성공!!

3. 자동 백업

  • 서버측 스크립트(백업) : gitlab_backup.sh
#/bin/bash
sudo chmod 755 /var/opt/gitlab/backups/
sudo rm -rf /var/opt/gitlab/backups/*
sudo gitlab-rake gitlab:backup:create
sudo chmod 644 /var/opt/gitlab/backups/*
  • 클라이언트 백업 실행 및 복사 : gitlab_backup.bat
    계정의 ssh 의 공개키기반 자동 로그인 및 sudoers 에 NOPASSWD 옵션 추가
ssh -t [서버] script/gitlab_backup.sh
scp [서버]:/var/opt/gitlab/backups/* .


'Dev > Linux' 카테고리의 다른 글

Gitlab Backup & Restore 방법  (0) 2017.01.10
ubuntu server 12.04  (0) 2013.10.28

태그