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' 카테고리의 다른 글

ubuntu server 12.04  (0) 2013.10.28

# 언어 설정  

sudo apt-get install language-pack-ko

sudo locale-gen ko_KR.UTF-8


sudo vi /etc/profile

LANG="ko_KR.EUC-KR"

LANG="ko_KR.UTF-8"


sudo vi /etc/environment

LANG="ko_KR.EUC-KR"

LANG="ko_KR.UTF-8"

LANGUAGE="ko_KR:ko:en_GB:en"


sudo vi /etc/default/locale

LANG=ko_KR.EUC-KR




# nginx 설치 

sudo apt-get install nginx




# php5 설치

# 의존성으로 php5 설치 됨

sudo apt-get install php5-fpm


# nginx, php5 유닉스 소켓으로 연결

sudo vi /etc/php5/fpm/pool.d/www.conf

; listen = 127.0.0.1:9000

listen = /var/run/php5-fpm.sock


sudo vi /etc/nginx/sites-enabled/default

location ~ \.php$ {

#   # With php5-fpm:

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

}


sudo service php5-fpm restart

sudo service nginx restart



# oracle jdk 설치 및 tomcat 설치 

sudo apt-get install python-software-properties


sudo apt-add-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-jdk7-installer


sudo apt-get install tomcat7

sudo vi /etc/default/tomcat7

JAVA_HOME=/usr/lib/jvm/java-7-oracle


sudo vi /etc/nginx/sites-enabled/default

location ~ \.jsp$ {

proxy_pass http://localhost:8080;

}


sudo service tomcat7 start

sudo service nginx restart



postgresql 설치 

sudo apt-get install postgresql postgresql-contrib


postgresql databse 기본 언어 설정 (ko_KR.utf8)

sudo -u postgres psql

psql (9.0.3)

Type "help" for help.

 

update pg_database set datallowconn = TRUE where datname = 'template0';


\c template0


update pg_database set datistemplate = FALSE where datname = 'template1';


drop database template1;


create database template1 with template = template0 'UTF-8' LC_CTYPE = ko_KR.utf8' LC_COLLATE = 'ko_KR.utf8'


update pg_database set datistemplate = TRUE where datname = 'template1';


\c template1


template1=# update pg_database set datallowconn = FALSE where datname = 'template0';


postgresql 리모트 접근 허용 (9.1 기준)

sudo vi /etc/postgresql/9.1/main/postgresql.conf

listen_addresses = '*'      # what IP address(es) to listen on;

                    # comma-separated list of addresses;

                    # defaults to 'localhost', '*' = all

                    # (change requires restart)

port = 5432             # (change requires restart)



# 개발툴 설치 

# gcc, g++ 등

sudo apt-get install build-essential

sudo apt-get install libboost-all-dev



# mono

sudo apt-get install mono-complete





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

Gitlab Backup & Restore 방법  (0) 2017.01.10

+ Recent posts