Subversionのバックアップ

Subversionのバックアップをそろそろ考えないと行けないと思ってたのですが、以外とよさげな方法にたどり着きました。

今のところさくらインターネットで借りたVPS上にSubversionをインストールしてソース管理は行っています。以前はローカルパソコン上にリポジトリを作成して、Dropboxで同期をとるという方法をとっていたのですが、せっかくVPSがあるのでそちらを運用しています。

バックアップの方法をどのようにしようかといろいろ検討したのですが、一番手っ取り早い方法が svnsync を使用してレプリケーションを行うという方法でした。

折しも、自宅でプリンタサーバとして使用しているネットブックが使用できる状態になったのでこの方法で決まりかなと。

バックアップの手順自体はこちらを参考にしました。とても簡単にレプリケーションが作成されたのでびっくりしています。

念のため方法だけメモしておきます。

  1. 同期をとるリポジトリの作成
       1: svnadmin create c:\work\svn\test

  2. hooks/pre-revprop-change.batを作成し、ファイルに"exit 0"と記載する。
    image
  3. リポジトリを同期のために初期化する。

      <div id="codeSnippetWrapper">
        <div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
          <pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> svnsync init file:///work/svn/test https://hoge.local/svn/test</pre>
    

  • 同期処理を開始する。

      <div id="codeSnippetWrapper">
        <div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
          <pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> svnsync sync <a href="///work/svn/test">file:///work/svn/test</a></pre>
    

  • とこのような手順で同期を行うことができます。

    ところで、一つ疑問に思ったのですが、私が使用しているリポジトリはApatchでWebDAVを使用していますがbasic認証を行っています。そう、ここまで認証の話は一切出てきませんでした。

    さすがに焦って調べてみたところ、以下のフォルダに認証情報が保存されているとのこと。

    C:\Users\<ユーザ名>\AppData\Roaming\Subversion\auth\svn.simple

    これらの認証情報はTortoiseSVNやeclipseで使用しているSVNプラグインなどで認証情報を保存する際に設定されるとのこと。うーん良くできてますね。

    最後に、同期を行ったリポジトリを"svnadmin dump"でバックアップを取得しドロップボックスにあげておけばバックアップは万全でしょう。