【東京】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がぶっ壊れても安心ですね!