subversionを新しく構築して旧サーバからプロジェクトフォルダの移動を
行う必要があったのでsubversionでデータのバックアップとリストアをやってみました。
単純バックアップ
単純にバックアップ・リストアするだけならsvnadminのdumpとloadでOKです。
- バックアップ
svnadmin dump /svn/repos > buckup.dmp
- リストア
svnadmin load /svn/repos < buckup.dmp
部分バックアップ
たとえば特定のフォルダだけバックアップしたい時や
他のsubversionへ特定フォルダの移動を行いたいときは
svndumpfilterコマンドを利用します。svnadmin dumpの後にパイプで繋ぎます。
- バックアップ(hogeフォルダのみ)
svnadmin dump /svn/repos | svndumpfilter include --drop-empty-revs --renumber-revs /hoge > hoge.dmp
- リストア
svnadmin load /svn/repos < hoge.dmp
incledeは指定されたフォルダだけを出力します。
特定フォルダのみ除きたい場合はexcludeを使用します。
複数指定したい場合はスペース区切りで
include /hoge /fuga
と指定します。
--drop-empty-revsオプションは
空のリビジョンを出力を行わない設定です。
これを設定しないと「単に番号が飛ばないようにするための空のリビジョンです。」
みたいなリビジョンが多数追加されてしまいます。
--renumber-revsオプションは
上記オプションで飛ばしたリビジョンの番号を詰める設定です。
これを設定しないと空き番ができてしまいます。
部分バックアップで注意する点は
バックアップしないフォルダからバックアップしたフォルダに
ファイルの移動やコピーを行っているとエラーになってしまう点です。
その場合は移動もとのフォルダも同時に
バックアップする必要があります。
subversionは移動やコピーも管理しているのでしかたないですね。