subversionでバックアップしてみた

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は移動やコピーも管理しているのでしかたないですね。