質問

SVN を初めて使用するのですが、Windows 環境でリポジトリをバックアップするためにどのような方法が利用できるのか知りたいのですが?

役に立ちましたか?

解決

(Linux) のようなものを使用できます。

svnadmin dump repositorypath | gzip > backupname.svn.gz

Windows は GZip をサポートしていないため、次のようになります。

svnadmin dump repositorypath > backupname.svn

他のヒント

svnadmin ホットコピーを使用します。例:

svnadmin hotcopy C:\svn\repo D:\backups\svn\repo

とおり :

他のプロセスがリポジトリを使用しているかどうかに関係なく、いつでもこのコマンドを実行してリポジトリの安全なコピーを作成できます。

もちろん、バックアップ コピーを ZIP (できれば 7-Zip) 圧縮することもできます。私見ですが、これはバックアップ オプションの中で最も簡単です。災害が発生した場合、解凍して元の位置に戻す以外にできることはほとんどありません。

Subversion Web サイトには、バックアップの自動化に非常に便利な hotbackup.py スクリプトが用意されています。

http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in

以下は次のような Perl スクリプトです。

  1. リポジトリをバックアップする
  2. SCP経由で別のサーバーにコピーします
  3. バックアップを取得する
  4. バックアップからテスト リポジトリを作成する
  5. テストチェックアウトを行う
  6. エラーがあれば電子メールで送信します (cron 経由)

スクリプト:

my $svn_repo = "/var/svn";  
my $bkup_dir = "/home/backup_user/backups";
my $bkup_file = "my_backup-";
my $tmp_dir = "/home/backup_user/tmp";   
my $bkup_svr = "my.backup.com";
my $bkup_svr_login = "backup";

$bkup_file = $bkup_file . `date +%Y%m%d-%H%M`;
chomp $bkup_file;
my $youngest = `svnlook youngest $svn_repo`;
chomp $youngest;

my $dump_command = "svnadmin  -q dump $svn_repo > $bkup_dir/$bkup_file ";
print "\nDumping Subversion repo $svn_repo to $bkup_file...\n";
print `$dump_command`;
print "Backing up through revision $youngest... \n";
print "\nCompressing dump file...\n";
print `gzip -9 $bkup_dir/$bkup_file\n`;
chomp $bkup_file;
my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz";
print "\nCreated $zipped_file\n";
print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`;
print "\n$bkup_file.gz transfered to $bkup_svr\n";

#Test Backup
print "\n---------------------------------------\n";
print "Testing Backup";
print "\n---------------------------------------\n";
print "Downloading $bkup_file.gz from $bkup_svr\n";
print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`;
print "Unzipping $bkup_file.gz\n";
print `gunzip $tmp_dir/$bkup_file.gz`;
print "Creating test repository\n";
print `svnadmin create $tmp_dir/test_repo`;
print "Loading repository\n";
print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`;
print "Checking out repository\n";
print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`;
print "Cleaning up\n";
print `rm -f $tmp_dir/$bkup_file`;
print `rm -rf $tmp_dir/test_checkout`;
print `rm -rf $tmp_dir/test_repo`;

スクリプト ソースと、このタイプのバックアップの根拠に関する詳細。

私が使う svnsync, 、リモート サーバーをミラー/スレーブとして設定します。2 週間前にサーバーがダウンしましたが、非常に簡単にスレーブをプライマリの位置に切り替えることができました (スレーブ リポジトリの UUID を元にリセットするだけでした)。

もう 1 つの利点は、同期をどちらかのサーバー上のタスクとしてではなく、仲介者によって実行できることです。クライアントを 2 つの VPN に接続し、VPN 間でリポジトリを同期させました。

svnadmin ホットコピー

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

このサブコマンドは、すべてのフック、設定ファイル、そしてもちろんデータベース ファイルを含む、リポジトリの完全な「ホット」バックアップを作成します。

svnバックアップ .NET コンソール アプリケーションである Google Code について。

  • リポジトリのバックアップを作成できます (ごみ) と svnadmin dump.

  • その後、それを使用してインポートできます svnadmin load.

SVNBook の詳細なリファレンス:「svnadmin を使用したリポジトリ データの移行」

基本的に、svn サーバーが停止している場合は、リポジトリ フォルダーをコピーしても安全です。(ソース: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )

したがって、サーバーを停止できる場合は、スクリプトまたはバックアップ ツールを使用して、サーバーを停止し、リポジトリをコピーするだけです。Cobian Backup は、サービスを自動的に停止および開始でき、増分バックアップも実行できるため、最近変更されたリポジトリの一部のみをバックアップできるため、ここに最適です (リポジトリが大きく、リモートの場所にバックアップする場合に便利です) )。

例:

  1. Cobian バックアップをインストールする
  2. バックアップ タスクを追加します。

    • ソースをリポジトリ フォルダーに設定します (例: C:\Repositories\),

    • バックアップ前イベントの追加 "STOP_SERVICE" ビジュアルSVN、

    • バックアップ後のイベントを追加します。 "START_SERVICE" ビジュアルSVN、

    • 必要に応じて他のオプションを設定します。 古いバックアップの削除、バックアップ スケジュール、宛先、圧縮を含む増分バックアップを設定しました。アーカイブの分割など

  3. 利益!

SVN サーバーをバックアップするには主に 2 つの方法があります。1 つ目は、リポジトリ ファイルのコピーを作成するホットコピーです。このアプローチの主な問題は、基礎となるファイル システムに関するデータが保存されるため、リポストアしようとすると問題が発生する可能性があることです。この種類のバックアップは、別の種類の SVN サーバーまたは別のマシンにあります。ダンプと呼ばれる別のタイプのバックアップがあります。このバックアップでは、基礎となるファイル システムの情報は保存されず、tigiris.org サブバージョンに基づくあらゆる種類の SVN サーバーに移植可能です。

バックアップ ツールについては、コマンド プロンプトから svnadmin ツール (ホットコピーとダンプが可能) を使用できます。このコンソールは svn サーバーが存在するのと同じディレクトリに存在するか、グーグルで svn バックアップ ツールを検索できます。

私がお勧めするのは、両方の種類のバックアップを作成し、それらをオフィスの外で自分の電子メール アカウント、Amazon s3 サービス、FTP、または Azure サービスに取得することです。そうすれば、外部の場所で svn サーバーをホストする必要がなく、安全なバックアップが得られます。あなたのオフィス。

ここでは、ローカルおよびリモートの Subversion リポジトリのダンプを作成するための GUI Windows ツールを示します。

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

ツールの説明には次のように書かれています。

この単純なツールを使用すると、ローカルおよびリモートの Subversion リポジトリのダンプ バックアップを作成できます。このソフトウェアは「svnadmin」と同じように動作しますが、それを超える GUI フロントエンドではありません。代わりに、Subversion ライブラリを直接使用して、他の追加ツールを使用せずにスタンドアロン モードでダンプを作成できるようにします。

これがお役に立てば幸いです...

私はリポジトリ全体をバックアップ場所にコピーすることを好みます。そうすれば、何かが起こった場合でも、ディレクトリをコピーして戻すだけで、すぐに対応できるようになります。

必要に応じて、アクセス許可を必ず保持してください。通常、これは Linux マシンでのみ問題となります。

ホストされたリポジトリの場合は、svn バージョン 1.7 以降を使用できます。 svnrdump, 、これは次のようになります svnadmin dump ローカルリポジトリの場合。これ 記事 は優れたウォークスルーを提供します。これは本質的に次のとおりです。

svnrdump dump /URL/to/remote/repository > myRepository.dump

ダンプ ファイルをダウンロードしたら、ローカルにインポートできます。

svnadmin load /path/to/local/repository < myRepository.dump

または、選択したホストにアップロードします。

FSFS リポジトリ形式 (デフォルト) を使用している場合は、リポジトリ自体をコピーしてバックアップを作成できます。古い BerkleyDB システムでは、リポジトリはプラットフォームに依存しないため、通常は svnadmin ダンプを使用することになります。

バックアップに関する svnbook ドキュメントのトピック を推奨します svnadmin hotcopy コマンドを使用すると、使用中のファイルなどの問題が処理されます。

@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%

echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"

svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn

これはバックアップを実行するために実行しているバッチ ファイルです

毎日のバックアップ ソリューションと完全バックアップ ソリューションの場合は、 SVNバックアップスクリプトはこちら.

プロジェクトのリモートSVNリポジトリのバックアップを取得する目的で、従った手順をまとめました。

install svk (http://svk.bestpractical.com/view/SVKWin32)

install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download)

svk mirror //local <remote repository URL>

svk sync //local

これには時間がかかり、リポジトリからログを取得していることが示されます。内部に一連のファイルを作成します C:\Documents and Settings\nverma\.svk\local.

このローカル リポジトリをリモート リポジトリからの最新の変更セットで更新するには、前述のコマンドを時々実行するだけです。

これで、ローカル リポジトリ (/home/user/.svk/local この例では、通常の SVN リポジトリであるかのように動作します。

このアプローチの唯一の問題は、ローカル リポジトリがリモート リポジトリ内の実際のリビジョンによって増分されたリビジョンで作成されることです。誰かが書いたように:

svk miror コマンドは、作成したばかりのリポジトリにコミットを生成します。したがって、後続の同期によって作成されるすべてのコミットのリビジョン番号は、リモート パブリック リポジトリと比較して 1 つ増加します。

しかし、リモート リポジトリのバックアップを時々必要としていただけで、他には何も必要なかったので、これは問題ありませんでした。

検証:

確認するには、次のようにローカル リポジトリで SVN クライアントを使用します。

svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  <local-dir-path-to-checkout-onto>

次に、このコマンドはローカル リポジトリから最新リビジョンをチェックアウトします。最後にこう書いてある Checked out revision N. 。これ N (上記の問題のため) リモート リポジトリで見つかった実際のリビジョンより 1 つ大きかった。

svk がすべての履歴も持ち込んだことを確認するために、以下を使用してさまざまな古いリビジョンで SVN チェックアウトを実行しました。 -r 2、10、50など次に、内のファイル <local-dir-path-to-checkout-onto> そのリビジョンによるものであることが確認されました。

最後にディレクトリを圧縮します C:/Documents and Settings\nverma/.svk/local/ zip をどこかに保存します。これを定期的に続けてください。

他の人も言っているように、Subversion チームの hot-backup.py には、単純な機能よりも優れた機能がいくつかあります。 svnadmin hotcopy

私は、マシン上のすべてのリポジトリをスパイダーする Python スクリプトでスケジュールされたタスクを実行し、ホットバックアップを使用して数日分のホットコピー (破損に対する妄想) を保持します。 svnadmin svndump リモートマシン上で。そこからの復元は、今のところ非常に簡単です。

1.1 SVN (Subversion) リポジトリからダンプを作成する

svnadmin dump /path/to/reponame > /path/to/reponame.dump

実際の例

svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump

1.2 Gzip で作成されたダンプ

gzip -9 /path/to/reponame.dump

実際の例

gzip -9 /backups/testrepo.dump

1.3 ワンライナーによる SVN ダンプと Gzip ダンプ

svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz

実際の例

svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz

Linux で SVN (Subversion) リポジトリをバックアップ (ダンプ) および復元 (ロード) する方法。
参照: svn subversionのバックアップと復元

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top