GitLab のバックアップ

(2013/06/07追記あり)

GitLab 環境のバックアップをどうしようかなぁ、KDE の repository が壊れた時の記事で git clone --mirror なんてのを見かけたなぁと思ってたら GitLab には gitlab:backup:create という rake task があるのを見つけたのでとりあえずこれを設定することにしました。

GitLab のバージョンは 5.2 です。

バックアップファイルの出力先は config/gitlab.ymlgitlab.backup.path で指定します。デフォルトは相対パスで tmp/backups になってます。/ で始めれば絶対パスになります。
実行時にこのディレクトリに repositories, db, uploads ディレクトリが作成されそれぞれが書きだされます。backup_information.yml というファイルにバージョンやバックアップ日時などが書かれます。そして {unix_timestamp}__gitlab_backup.tar という tar ファイルにまとめられます。3つのディレクトリと backup_information.yml は削除されます。

世代管理は config/gitlab.ymlgitlab.backup.keep_time に残しておきたい期間を秒で設定します。デフォルトは 0 で無期限です。

Git repository のバックアップは

git bundle create #{path_to_bundle(project)} --all

で行われています。git bundle はバックアップに適しているみたいです。速いです。

git bundle についてはこちらのスライドが大変参考になります。
「Gitによるバージョン管理」の執筆者によるGit勉強会か講演会 / git bundle
https://speakerdeck.com/iwamatsu/git-bundle

でも、やっぱりリアルタイムでバックアップした方が良いよなぁ
gitのbareリポジトリのバックアップをとる – 馬鹿と天才は紙一重
あたりを参考にそのうち考えよう。

※ 2013/06/07 追記

public/uploads ディレクトリは何もファイルをアップロードしてない状態では作成されていないので、task がエラーで終了します。

コメント