[GitBucket] バックアップを定期的に取る

GitBucketで、定期的にデータバックアップを取る方法です。

バックアップの流れ

  1. バックアップスクリプトの設置
  2. バックアップディレクトリの設置
  3. gitbucket-h2-backup-pluginのインストール
  4. 定期実行

ファイル構成

docker-composeでインストールしているので少々特殊な構成ですが、その他の方法でインストールした場合でも同じやり方で出来ると思います。

gitbucket
└── backup //<--バックアップディレクトリ
└── backup.sh //<--バックアップスクリプト
└── data
      └── backup //<--dbのバックアップはこちらにされます
      └── data
      └── data.mv.db
      └── database.conf
      └── gitbucket.conf
      └── plugins
      └── repositories
      └── tmp
└── docker-compose.yml

通常インストールの場合は、dataディレクトリが/gitbucketになると思います。

バックアップの準備

バックアップスクリプトの設置

GitBucketのバックアップスクリプトは、公式のものが公開されているので、そちらを使います。そのまま、backup.shとして保存します。

GitBucket backup

gitbucket-h2-backup-pluginのインストール

DBのバックアップを取る場合に必要です。レポジトリだけでいいなら不要です。

最新版をGitHubからダウンロードして、pluginsディレクトリに入れます。

gitbucket-h2-backup-plugin

cd gitbucket/data/plugins

wget https://github.com/gitbucket-plugins/gitbucket-h2-backup-plugin/releases/tag/1.5.1

設置が済んだらGitBucketを再起動します。

バックアップの実行

ここまできたらバックアップができるかテストします。

/bin/bash {バックアップスクリプトの場所} {GitBucketディレクトリの場所} {バックアップディレクトリの場所} {GitBucket H2 BackupのURL} 

で呼び出します。

上記のディレクトリ構成の場合は、

/bin/bash /home/user/gitbucket/backup.sh /home/user/gitbucket/data /home/user/gitbucket/backup https://git2.example.jp/database/backup

となります。

完了すれば、

Starting clone process
All repositories, cloned
Update repositories: phase 1
Update repositories: phase 1, terminated
Database backup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
cp: cannot stat '/home/user/gitbucket/data/gitbucket-database-backup.zip': No such file or directory
Configuration backup
Avatars backup
Update repositories: phase 2
Update repositories: phase 2, terminated
Update process ended, backup available under: /home/user/gitbucket/backup

dbのバックアップでエラーが起きてますが、/gitbucket/data/backupの中に入っています。

cronなどで定期実行する

あとは、実行文をcronなどに登録して実行します。

cronなら、

00 3 * * * /bin/bash /home/user/gitbucket/backup.sh /home/user/gitbucket/data /home/user/gitbucket/backup https://git2.example.jp/database/backup

以上です。

あとは定期バックアップをしたファイルを別の場所に移すようにもしたほうがいいですね。


参考:GitBucketのバックアップ方法