SVNリポジトリのバックアップ戦略


回答:


179

あなたは(Linux)のようなものを使うことができます:

svnadmin dump repositorypath | gzip > backupname.svn.gz

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

svnadmin dump repositorypath > backupname.svn

11
確かではありませんが、7-zipのようないくつかのツールはSTDINからのデータを圧縮できます。つまり、Windowsでも最初のスタイルを使用できます。
nickf 2009

5
私はこれだけを見ていて、ドキュメントsvnbook.red-bean.com/nightly/en/からのコメントは、--deltasオプションを使用しない限り、svnadminダンプの非常に大きな出力が得られるということです。
Jason S、

5
Windowsはgzipをサポートしています。unxutilsWebページunxutils.sourceforge.net
Jason S

52
7Zipの使用: svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn これにより、からの出力である「backupname.svn」という単一のファイルを含む「backup.7z」という名前のファイルが作成されsvnadmin dumpます。
Matt

4
@Josh Stodola bashfor project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Fedir RYKHTIK

107

svnadmin hotcopyを使用します。例:

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

あたりとしての本

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

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


13
svnadmin dumpは、いくつかの理由でバックアップに適していると思います。svn.haxx.se/users/archive-2005-05/0842.shtmlを
daremon

4
@daremon:リンクした投稿への返信を読むことをお勧めします。具体的には、svnadmin dumpについて言及しているものには、リポジトリの制御ファイルが含まれていません。
Powerlord、2009年

レースは終了しましたが、
R。Bemroseの

hotcopyコマンドは、生成したバックアップを上書きまたは増分しません。だから、次のバッチファイルでタスクスケジューラの外観を使用して、Windowsでそれを自動化することを計画している場合:cfchimp.com/wordpress/2008/05/...
ライアンサンプソン

1
警告の言葉。svnsyncの実行中は、リポジトリのsvnsyncによるミラーコピーをホットコピーしないでください。結果のコピーが破損している可能性があります。詳細については、このスレッドを参照してください。subversion.open.collab.net/ds/...
zvolkov


22

以下は、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`;

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


19

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

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


それで、明らかに2つの間で最新のレポバージョンを同期しますか?
PositiveGuy

1
タイトルには載っていますが、これを「同期」と呼んでいるかわかりません。これは実際にはバックアップであり、マスターでリビジョンを取得してスレーブに配置します。スレーブに変更を加えた場合、それらは「同期」を壊すか、狂気をもたらすでしょう。このツールの使用目的は、オフサイトの読み取り専用ミラーを作成することですが、バックアップサーバーを作成するというすばらしい仕事をします。
トムメイフィールド、

1
svnsyncの利点は、これを頻繁に実行できることです。10分ごと、またはコミットごと(フックを使用)。その利点は、最後のバックアップからライブリポジトリが失われるまでの間のデータ損失の可能性を減らすことができることです。
8DH 2013

12

svnadminホットコピー

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

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




5

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

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

例:

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

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

    • バックアップ前のイベント"STOP_SERVICE"VisualSVN を追加します。

    • バックアップ後のイベント、"START_SERVICE"VisualSVN、

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

  3. 利益!


4

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

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

私の推奨は、両方の種類のバックアップを行い、それらをオフィスからメールアカウント、amazon s3サービス、ftp、またはazureサービスに転送することです。これにより、svnサーバーをどこかでホストしなくても、安全なバックアップを取得できます。あなたのオフィス。


4

ローカルとリモートのSubversionリポジトリのダンプを作成するためのGUI Windowsツールを次に示します。

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

ツールの説明は言う:

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

この助けを願っています...


これを共有してくれてありがとう、述べたとおりです。
Ed DeGagne 2016年

3

repoディレクトリ全体をバックアップ場所にコピーするだけです。そうすれば、何かが発生した場合にディレクトリをコピーして、すぐに使用できるようにすることができます。

必要に応じて、権限を保持してください。通常、これはLinuxマシンでのみ問題になります。


7
これは、誰かがコピー操作中にコミットを行った場合、厳密には安全ではありません。リポジトリにアクセスしてそれを使用する頻度が4人しかいない場合でも、私はこれに遭遇しました。ホットコピーの使用に関するダンカンの回答をご覧ください。
nickf 2009

ただし、完全に単独で作業している場合、これはリポジトリをバックアップする安全な方法だと思いますか?私は個人的なプロジェクトにsubversionを使用しており、これが現在私が行っていることです。
Andrew Garrison、

3

ホストされたリポジトリでは、svnバージョン1.7以降で使用できます。svnrdumpこれはsvnadmin dump、ローカルリポジトリと同様です。この記事では、基本的に次のように要約された素晴らしいウォークスルーを提供します。

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

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

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

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


3

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

バックアップ用svnbook文書のトピックは推奨していますsvnadmin hotcopy、それは、使用中のファイルのような問題の世話をし、そのようになるように、コマンドを。


2
@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

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



1

プロジェクトのリモート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がすべての履歴をもたらしたことを確認するために、2、10、50 -rなどを使用してさまざまな古いリビジョンでSVNチェックアウトを実行しました。次に、<local-dir-path-to-checkout-onto>そのリビジョンからのを確認しました。

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


0

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

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


0

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バックアップと復元

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.