べにやまぶろぐ

技術寄りの話を書くつもり

cron で GitLab のバックアップを定期的にとる。

バージョン : GitLab 6.0.2

最初思いっきり mysqldump しかけてあれーダンプファイルのサイズ少ないなーとか思ってたんですが Git なんですから当然ですよね。GitLab ではMySQL のダンプと Git レポジトリのダンプを行ってくれる便利なバックアップツール(Rake タスク)が提供されています。

doc/raketasks/backup_restore.md · master · GitLab.org / GitLab FOSS · GitLab

bundle exec rake gitlab:backup:create RAILS_ENV=production

上記 URL には cron の設定まで載っていますがシェルスクリプトで呼ぼうとして

/opt/rh/ruby193/root/usr/bin/ruby: error while loading shared libraries: libruby.so.1.9: cannot open shared object file: No such file or directory

みたいに怒られたので下記のような感じになりました。PATH はもちろん環境依存です。

#!/bin/bash

PATH=/opt/rh/ruby193/root/usr/bin:$PATH
LD_LIBRARY_PATH=/opt/rh/ruby193/root/usr/lib64:$LD_LIBRARY_PATH

export PATH
export LD_LIBRARY_PATH

cd /home/git/gitlab
bundle exec rake gitlab:backup:create RAILS_ENV=production

ちなみに GitLab 内のプロジェクトの wiki に何も書いていないと下記のように FAILED とマークされますが、バックアップ自体は正常に行われているようです。

Dumping database ...
done
Dumping repositories ...
 * beniyama/hoge ... [DONE]
 * beniyama/hoge.wiki ...  [FAILED]
done
Dumping uploads ...
done
Creating backup archive: 1395061200_gitlab_backup.tar ... done
Deleting tmp directories ... done
Deleting old backups ... done. (0 removed)