2017年7月5日水曜日

SVN リポジトリのHDDを交換してみた。

チーム用には Git という話は置いといてw

Windows マシンの外付けディスクに SVN のリポジトリを置いてローカルのバックアップを取るようにしてます。

で、このディスクがいっぱいになってしまいそうになったので、別のHDDに移動させてみようと試みました。

同じ苦労をする人もいそうなので、まとめておきます。

リポジトリのバックアップ

リポジトリのバックアップは、svnadmin dump コマンドで実行します。

残念ながらHDDを丸ごと、というのはできそうになかったので、リポジトリごとに実施してみました



■サンプルとして、次のような環境があるとします。

・現在のリポジトリの位置:G:\Repositories

・リポジトリ:Project1, Project2, Personal

・新しいHDDは H: ドライブ

・H:\Backup, H:\Repositories のフォルダを作っておきます。



■コマンドプロンプトで、H:\Backup に移動します

C:\>H:

H:\>cd Backup

H:\Backup>



■svnadmin dump コマンドでバックアップファイルを作成します。

ひとつづつ処理するのはめんどくさいので、for でループさせました。

H:\Backup>for %x in (Project1 Project2 Personal) do svnadmin dump >G:\Repositories\%x.dmp

リポジトリのダンプファイルが出来上がります。


リポジトリのリストア

■新しいリポジトリに移動します。

H:\Backup>cd \Repositories

H:\Repositories>



■svnadmin create でリポジトリを作ります。

同じように for でループして作成しました。

H:\Repositories>for %x in (Project1 Project2 Personal) do svnadmin create %x



■svnadmin load コマンドでダンプファイルからリストアを実行します

H:\Repositories>for %x in (Project1 Project2 Project3) do svnadmin load ./%x/ <H:\Backup\%x.dmp

リポジトリのリストアが出来上がったようです。

500 Internal Server Error が出ちゃう

これで動くと思ったんですよ。そしたら・・・

しばらくすったもんだした挙句、リポジトリのリストアで、コマンドプロンプトを管理者モードで実行してたのがよくなかったみたいでした

で、通常モードで再度リストア処理を実施しましたorz


forbidden Error が出ちゃう

お次は、これ・・・

んー・・・何が間違ってるんだろう・・・しばらく悩みました。

で、Server Manager で古いリポジトリと新しいリポジトリを比較してセキュリティの違いを発見!

リポジトリのセキュリティ設定

管理には Visual SVN Server Managerってのを使っているので、リポジトリを右クリック

セキュリティタブで、ユーザーのアクセス権を追加する必要がありました。
ローカルで使用しているだけなので、ここは Everyone に R/W を許可しました。


ユーザーの追加

Visual SVN Server Manager でユーザーを追加しまして、エクスプローラから SVN 更新を選んでみると

ユーザー認証画面が出てきまして、ディスクの入れ替えが完了しました。

めでたしめでたし。