自動バックアップ機能の設定概要
ラズパイを使用してソースコード管理用のGitlabを構築しましたが、リポジトリを更新の度に手動コマンドでバックアップを作成するのは手間なので、自動バックアップの設定をします。
関連ページ
バックアップ設定の要求事項
- バックアップの頻度
通常の企業で使用する場合は少なくとも1日に1回はバックアップを作成していると思いまが、私のシステムはそんなに頻繁にプッシュされないので、1週間に1回のバックアップとします。 - 実施のタイミング
バックアップ中は少なからず負担がかかるので、夜中の寝ている時間帯に実施します。基本的に土日にプッシュすることが多いので、月曜日の朝3時くらいが良さそうです。 - バックアップの寿命
Gitlabの機能でバックアップの寿命を設定できます。保存先ストレージとのバランスとなりますが、半年くらいに設定しておきます。バックアップ用ストレージは120GB程度なので、1ファイルあたり、約4.6GBまで許容できます。
大まかな手順
まず、Gilabの設定ファイルでバックアップの寿命を設定します。その後、cronにバックアップコマンドを設定します。
Gitlabバックアップ設定の変更
バックアップ設定の手順は、設定ファイルの編集作業と設定ファイルの適用作業が必要です。
設定ファイルの編集作業
まずは、Gitlabマニュアルに従い、gitlab.rbを編集して、バックアップ寿命を設定します。
# vim /etc/gitlab/gitlab.rb
対象の設定項目"gitlab_rails['backup_keep_time']"はコメントアウトされているので、所望の時間に変更してコメントアウトを外します。今回は半年なので、15724800秒に設定します。これで、26週間の寿命になります。
gitlab_rails['backup_keep_time'] = 15724800
マニュアルにも記載がある注意点ですが、ここで設定した寿命は既存のバックアップファイルにも適用されます。既存ファイルには適用しないオプションがあるのですが、今回は設定しません。
設定ファイルの適用作業
Gitlabを停止します。
# gitlab-ctl stop
Gitlabを再構成します。
# gitlab-ctl reconfigure
再度、Gitlabを起動します。
# gitlab-ctl start
設定ファイルのバックアップ
設定変更を行ったので、設定ファイルのバックアップを行っておきます。
tar zcvf gitlab_config_20240211.tgz /etc/gitlab tar: メンバ名から先頭の `/' を取り除きます /etc/gitlab/ /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab.rb /etc/gitlab/trusted-certs/
以上でバックアップ設定は完了です。
cronで定期バックアップの実行
crontabを編集して定期的にバックアップコマンドを実行します。
# crontab -e
編集に使用するエディターを聞かれるので、好きなものを選びます。今回は"vim.gtkを選択しました。マニュアルに従い、毎週月曜日の03:00にバックアップを実施する設定を追加します。
0 3 * * 1 /opt/gitlab/bin/gitlab-backup create CRON=1
crontabの変更は自動実施されるので、これで自動バックアップが取れるはずです。月曜日が過ぎてから、結果を確認してみます。
⇒無事に自動バックアップが取れていることを確認しました。現状ではファイルサイズが100MB以下なので、1分程度で完了しています。