仕事でのソース管理がSubversionになってから2年くらい経ったんだろうか?
大分定着してきた感がある。
そんなSubversionだが、バックアップは同じHDD内にdumpを固めてあるだけ。
最近、リポジトリの量も増えてきたのでバックアップは別サーバに取りたいところ。
と、考えながら2週間が過ぎ…今日遂に別サーバへの同期をした。
Subversion 1.4.0から svnsync っていうコマンドが加わったようで、それを使えば同期と元サーバが壊れた時にそのまま昇格できるとのこと。
といってもあくまでリポジトリの同期であって、その他のApache経由のアクセスやログイン情報、バージョン管理されない情報、hooksディレクトリの中身は同期されない。
一通り操作方法
# svnadmin create REPO
# svnsync init file:///REPO svn://HOST/REPO
これで、svn://HOST/REPOと同期するリポジトリが出来る。
svnsync はリビジョンプロパティ(更新者や更新時間など?)の設定が必要になるので
# vi REPO/hooks/pre-revprop-change
pre-revprop-changeの中身
#!/bin/sh
exit 0
と、hookを用意する。
(このとき、実行権限も付ける)
あとは、現状との同期
# svnsync sync REPO
svnsync init で対象のリポジトリは指定しているので同期したいリポジトリを指定するだけで同期を始めてくれる。
あとは、毎日深夜とかに同期するかコミットがある度に同期させればバックアップサーバの完成。