GitLabは標準にはバックアップやリストアのため、便利なツールが用意されています。
今回、バックアップの自動化についてまとめました。
目次
GitLabでバックアップ
GitLab omnibusパッケージを使っている場合、GitLabでバックアップするには以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# gitlab-rake gitlab:backup:create Dumping database ... Dumping PostgreSQL database gitlabhq_production ... [DONE] done Dumping repositories ... * root/AAA ... [DONE] * root/AAA.wiki ... [SKIPPED] * root/BBB ... [DONE] * root/BBB.wiki ... [SKIPPED] * root/CCC ... [DONE] * root/CCC.wiki ... [SKIPPED] done Dumping uploads ... done Creating backup archive: 1431352465_gitlab_backup.tar ... done Uploading backup archive to remote storage ... skipped Deleting tmp directories ... done Deleting old backups ... skipping |
バックアップファイルは、
/var/opt/gitlab/backups/1431352465_gitlab_backup.tar
に作成されます。
GitLab 7.4からは、このバックアップファイルをFogライブラリを使って、
Amazon S3、
Rackspace CloudFiles、
Google Cloud Storage
にアップロード出来るようです。
Fogライブラリは、Rubyで書かれたクラウドサービスライブラリです。
Starting with GitLab 7.4 you can let the backup script upload the ‘.tar’ file it creates.
It uses the Fog library to perform the upload.
In the example below we use Amazon S3 for storage.
But Fog also lets you use other storage providers.
(https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md)
GitLabでバックアップをスケジュール化して世代保存
バックアップのスケジュール化の方法は、GitLabの公式サイトに詳しく記載されています。
For omnibus installations
To schedule a cron job that backs up your repositories and GitLab metadata, use the root user:
1 2 3 |
sudo su - crontab -e |
There, add the following line to schedule the backup for everyday at 2 AM:
1 2 |
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 |
You may also want to set a limited lifetime for backups to prevent regular backups using all your disk space. To do this add the following lines to/etc/gitlab/gitlab.rb
and reconfigure:
1 2 3 |
# limit backup lifetime to 7 days - 604800 seconds gitlab_rails['backup_keep_time'] = 604800 |
NOTE: This cron job does not backup your omnibus-gitlab configuration or SSH host keys.
(https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md)
このWEBサイトを参考にcronを使って午前2時にバックアップが実行されるようにします。
注意点として、このバックアップではomnibus-gitlabの設定、コンフィグレーションやSSHのキーはバックアップされません。
1 2 3 |
# crontab -e 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 |
次に、バックアップが保持される時間を4日に設定します。
60秒 x 60 x 24 x 4日=345600秒
/etc/gitlab/gitlab.rb
を変更します。
1 2 3 4 |
# vi /etc/gitlab/gitlab.rb gitlab_rails['backup_keep_time'] = 345600 を追加する |
この後、GitLabを再構築します。
1 |
# gitlab-ctl reconfigure |
別の例を見てみましょう。
実際のサーバー運用に合わせて、例えば、
- 毎週1回、土曜日にバックアップを作成。
- 4世代保持する。
という場合を考えてみましょう。
crontabは、左から分、時、日、月、曜日を指定するので、毎週土曜日の深夜2時にバックアップを実行するには以下のように設定します。
ここで0が月曜日、1が火曜日となり、6が土曜日です。
1 2 |
# crontab -l 0 2 * * 6 /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 |
バックアップが保持される時間を30日に設定します。
60秒 x 60 x 24 x 30日=2592000秒
/etc/gitlab/gitlab.rb
を変更します。
1 2 3 4 |
# vi /etc/gitlab/gitlab.rb gitlab_rails['backup_keep_time'] = 2592000 を追加する |
この後、GitLabを再構築します。
1 |
# gitlab-ctl reconfigure |
GitLabのバックアップの保存場所
ここまでで見てきたように、GitLabのバックアップの保存場所は
/var/opt/gitlab/backups
です。
このディレクトリに以下のようにtar形式でバックアップされます。
/var/opt/gitlab/backups/1431352465_gitlab_backup.tar
このファイルは、
/var/opt/gitlab/git-data/repositories/
のリポジトリをまとめたものです。
GitLabのバックアップの容量
GitLabのバックアップファイルは
/var/opt/gitlab/git-data/repositories/
をまとめたものなので、容量はリポジトリの大きさと同程度になります。
GitLabのバックアップのリストア、復元
GitLabのバックアップのリストア、復元の方法は次の通りです。
/var/opt/gitlab/backups/1431352465_gitlab_backup.tar
がバックアップされたファイルとします。
以下のコマンドでリポジトリはリストアされて復元されます。
1 |
# gitlab-rake gitlab:backup:restore BACKUP=1431352465 |
Gitについてのおすすめの本
↓Gitについてのおすすめの本はコチラ
コメント