gitlab 백업 및 복구
gitlab 데이타와 첨부 파일을 백업하는 방법
Backup
bundle exec rake RAILS_ENV=production gitlab:backup:create 명령어로 백업할 수 있다. 백업 파일 관련 설정은 config/gitlab.yml 에서 설정할 수 있다.
## Backup settings backup: # 백업 파일을 저장할 경로 path: "tmp/backups" # Relative paths are relative to Rails.root (default: tmp/backups/) # 오래된 백업 파일 삭제 여부. 0 이면 삭제하지 않는다. 604800 일 경우 일주일이 지난 백업 파일은 삭제한다. keep_time: 604800 # default: 0 (forever) (in seconds)
기본적으로 백업 경로는 /home/git/gitlab/tmp/backups 이고 예전 파일 삭제는 하지 않는다. 실제 프로젝트를 진행하게 되면 일정 기간이 지난 파일은 삭제하게 하는게 좋다. backup: 의 keep_time 에 초단위로 설정할 수 있다.
604800 라 설정하면 1주일이 지난 파일은 모두 삭제하게 된다.
gitlab backup
$ cd /home/git/gitlab $ sudo -u git -H bundle exec rake RAILS_ENV=production gitlab:backup:create Dumping database ... done Dumping repositories ... * root/ini-and-script ... [SKIPPED] * lesstif/util-script ... [DONE] * lesstif/util-script.wiki ... [SKIPPED] done Dumping uploads ... done Creating backup archive: 1387289435_gitlab_backup.tar ... done Deleting tmp directories ... done Deleting old backups ... skipping
위의 경우 생성된 백업파일은 1387289435_gitlab_backup.tar 이다.
cron 과 연계하면 자동으로 백업할 수 있다.
- cd /home/git/gitlab
- sudo - git -h crontab -e
# Create a full backup of the GitLab repositories and SQL database every day at 2am 0 2 * * * cd /home/git/gitlab && PATH=/usr/local/bin:/usr/bin:/bin bundle exec rake gitlab:backup:create RAILS_ENV=production
Restore
다음 명령어를 실행하면 백업 파일중 가장 최신 타임스탬프의 파일을 복구한다.
$ cd /home/git/gitlab $ sudo -u git -H bundle exec rake RAILS_ENV=production gitlab:backup:restore
특정 타임스탬프의 백업을 복구하려면 BACKUP 옵션에 타임스탬프값만 적어줘야 한다. 위에서 백업된 파일명이 1387289435_gitlab_backup.tar 이고 타임스탬프는 앞에 숫자값이다.
$ cd /home/git/gitlab $ sudo -u git -H bundle exec rake RAILS_ENV=production gitlab:backup:restore BACUP=1387289435 Unpacking backup ... done Restoring database ... Restoring MySQL database gitlabhq_production ... [DONE] done Restoring repositories ... springwebdevel/spring-web ... [DONE] lesstif/spring-web ... [DONE] Put GitLab hooks in repositories dirs [DONE] done Restoring uploads ... done This will rebuild an authorized_keys file. You will lose any data stored in authorized_keys file. Do you want to continue (yes/no)? yes ..Deleting tmp directories ... done
Ref