bitbucket.org のバックアップを自動化
早速、アドベントカレンダーが回ってきました。hgコマンドで知られるMercurialです。
当社ではhgを標準的に使っています。gitやgithub全盛の時代ですが、hgの方がsvnからの移行で覚えることも少なく、非常にいいと思っています。
その中でも、bitbucket.orgの存在も大きな要因です。(現在は、bitbucketでもgitが使えるのですが…)
bitbucketを企業で使う一番のメリットは、課金体系だと思います。レポジトリ単位ではなく、プライベートレポジトリに対してのpull&pushできるユーザ人数で課金されます。当社のように、プロジェクト数が多く、それ毎にレポジトリを作る場合とても便利に使えています。
今回はbitbucketをより便利に安心して使う為のプロダクトを紹介します。
背景
bitbucketの不満に「サービスが停止していることがある」というのがあります。または、「サービスがなくなったらどうする??」とも言われます。
それらの不安を解消するために作ったプロダクトが、c2.recipe.bitbucketbkです。これは、レポジトリを定期的にバックアップするもので、issueトラッカーもバックアップします。
元々、分散レポジトリシステムなので、ローカル環境などにレポジトリは持っているので、センターサーバがなくなっても復元などは容易に行えます。しかし、レポジトリのすべてのリストがなかったり、ローカルのデータを集めてくるのは面倒です。さらに、issueトラッカーのデータを復元することは出来ません。
もう一つ、issueトラッカーの残件リストの提出を求められることがあります。このプロダクトが生成するissueバックアップはExcel形式のファイルで取り出すことができます。
概要
- プロダクト名: c2.recipe.bitbucketbk
- 作成者: Manabu TERADA(私です)
- 配布先: http://pypi.python.org/pypi/c2.recipe.bitbucketbk
- コードレポジトリ: https://bitbucket.org/cmscom/c2.recipe.bitbucketbk
- バグトラッカー: https://bitbucket.org/cmscom/c2.recipe.bitbucketbk/issues
- 動作環境: Python 及び buildout環境
- 実装方式: buildoutレシピ形式での提供
提供機能
- ユーザ名、パスワードを設定
- ユーザ配下のレポジトリのリストを取得し、レポジトリのclone(バックアップ)作成、issueトラッカーの内容をExcel形式のファイルで書出し。
- バックアップ対象外のレポジトリ設定
- バックアップ起動スクリプトの提供(cronなどの定期実行用)
使い方
buildout環境を準備
フォルダを作成し、作成したフォルダに移動し、
bootstrap.pyをダウンロード (http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py)する。
下記を実行
$ python bootstrap.py -d init
buildout.cfg を変更し設定の実行
buildout.cfgの例
parts =
...
bitbucketbk
[bitbucketbk]
recipe = c2.recipe.bitbucketbk
username = xxxxxxxxxxxxx
password = xxxxxxxxxxxxxxxxxx
location = /backups
ignore_project =
xxxxxx1
xxxxxx2
isseu_backup_count = 3
buildoutコマンドで設定を行う
bin/buildout -N
バックアップコマンドを起動
bin/bitbucketbk
backupsフォルダの中にバックアップファイルが出来上がります。
cronにbuildout.cfgを用いて登録しておく
例:
[backupcronjob]
recipe = z3c.recipe.usercrontab
times = 0 12 * * *
command = ${buildout:directory}/bin/bitbucketbk
今後
git対応や、多くの人に使ってもらうためのドキュメント化や機能アップを予定しています。
まだ、テストなどが足らず正式リリースになっていません。みなさん使っていただき、バグレポートなどをお待ちしております。
また、開発に興味のある方は連絡下さい。