GitBucketのバックアップ方法


【東京】JJUGナイトセミナー Git入門が盛況だったみたいですね!

@syobochim が紹介したGitBucketは簡単に導入できますが、ちゃんとバックアップの運用も考えないとえらいことになります。

GitBucket, backupでググると@koudaiiiのメモ
が一番最初に見つかったけど、ちょっと古そうだったので調べてみました。

ってことでバックアップ方法の紹介です。

GitBucketのバックアップ方法

基本的には以下のWikiの通りなので以下を参照してください。

バックアップにはWikiに記載されているbackup scriptをそのまま利用します。

事前準備(オプション)

DB(H2)のバックアップを取る場合はgitbucket-h2-backup-pluginをインストールしておきましょう。

プラグインの画面を見ると、以下の通り/gitbucket/database/backupにHTTP GETリクエストを送ればバックアップ処理が動くことが書かれており、上記のbackup script内でも引数で渡されたDBバックアップ用のURLに対してHTTP GETリクエストを送るようになっています。

バックアップ

Wikiに記載されているbackup scriptをコピーし、任意の場所に配置します。
自分の場合は$GITBUCKET_HOME/backup.shとして配置しました。

backup scriptはコマンド引数として第一引数にGitBucketのホームディレクトリ、第二引数にバックアップ先のディレクトリ、第三引数はオプションとして上記事前準備で説明したDBバックアップ用のURLを指定します。

tomcatで動かしているので、自分の環境の場合は以下のとおり。

$ bash /var/lib/tomcat7/data/.gitbucket/backup.sh $GITBUCKET_HOME $GITBUCKET_HOME/backup  http://localhost/gitbucket/database/backup

実行すると、指定したバックアップディレクトリに$GITBUCKET_HOME/dataのアーカイブ(data.tar.gz)、各リポジトリのバックアップ(--mirrorオプション付でcloneしたもの)、GitBucketの設定ファイル(gitbucket.conf)、第三引数まで指定した場合はデータベースのバックアップ(gitbucket-database-backup.zip)が出力されます。

cronで定期的にバックアップ

手動で実行するのはさすがに面倒なので、cronで定期的に実行するように設定しておきます。

/etc/crontab を以下のように設定します。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
GITBUCKET_HOME=/var/lib/tomcat7/data/.gitbucket
BACKUP_FOLDER=/var/lib/tomcat7/data/.gitbucket/backup


# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

00 3 * * * root bash /var/lib/tomcat7/data/.gitbucket/backup.sh $GITBUCKET_HOME $BACKUP_FOLDER http://localhost/gitbucket/database/backup

これでH2がぶっ壊れても安心ですね!