その他
    ホーム技術発信DoRubysvnリポジトリの移動

    svnリポジトリの移動

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    rick No34です。
    いまさらですが、svnリポジトリ移動の手順を記載します。

    環境

    サーバA(svnが有るサーバ)
    サーバB(svnを移行するサーバ)
    サーバC(サーバBのレプリサーバ)

    手順

    ・Aサーバ
    バックアップ

    svnadmin dump リポジトリロケーション > バックアップ名
    例:
    svnadmin dump /var/lib/svn/hoge > hoge.dump

    hoge.dumpをサーバBへscp等で送信

    ・Bサーバ
    svnディレクトリ作成

    mkdir /var/lib/svn

    svnリポジトリ用ディレクトリ作成

    mkdir /var/lib/svn/hoge

    ディレクトリ権限変更

    chown -R apache:apache /var/lib/svn/hoge
    daemonだったりもする

    バックアップ移動

    mv ./hoge.dump /var/lib/svn

    svnリポジトリ作成

    svnadmin create /var/lib/svn/hoge/

    リストア

    svnadmin load /home/svn/hoge/ < hoge.dump

    単一サーバの場合は、これで終了

    ・Cサーバ
    svnディレクトリ作成
    (Bサーバ同様省略)
    svnリポジトリ用ディレクトリ作成
    (Bサーバ同様省略)
    ディレクトリ権限変更
    (Bサーバ同様省略)
    SVNリポジトリ作成
    (Bサーバ同様省略)
    設定ファイル作成

    cd /var/lib/svn/hoge/hook
    vi pre-revprop-change

    #!/bin/sh
    exit 0

    vi pre-revprop-change.bat

    exit 0

    初期化

    svnsync init svn+ssh://バックアップ先//var/lib/svn/hoge svn+ssh://バックアップ元//var/lib/svn/hoge

    ※ssh接続先ポートが変更されている場合

    vi ~/.subversion/config

    [tunnels]
    ssh_hoge = ssh -p 8888

    これでsvn+sshをsvn+ssh_hogeに変える

    権限変更

    chmod +x /var/lib/svn/hoge/hooks/pre-revprop-change

    同期

    svnsync sync svn+ssh://バックアップ先//var/lib/svn/hoge

    バッチ設定
    同期のコマンドをバッチで設定、もちろんパスワードレスの状態にしておく
    終了

    その他

    ・差分だけダンプ

    svnadmin dump /var/lib/svn/hoge -r 12039:12040 –incremental > hoge.dump

    ・差分リストア

    svnadmin load /var/lib/svn/hoge/ < hoge.dump

    ・リビジョン確認方法

    /usr/bin/svnlook youngest /var/lib/svn/hoge

    ・リビジョン強制戻し

    cd /var/lib/svn/hoge/db
    rm /revs/x/消したいリビジョン
    vi current # 直したリビジョンに書き直す
    echo > rep-cache.db # キャッシュ削除
    rm revprops/x/

    注意点

    現リビジョンが100で、後から90~91の差分リストをした場合
    リビジョンの90~91が更新されるわけではなく、101,102として更新される。