6

ファイル システム上にサイズが 1 GB から 10 GB の約 12 個のリポジトリがあり、XP 64 でそれらすべての自動バックアップをセットアップする必要があります (コンピューターがダウンしたときに古いバックアップ スクリプトが失われました)。ビットマシン。

SVN リポジトリをバックアップする最良の方法についてのこの質問を読んだ後、私たちが持っている最大のリポジトリ (約 13 GB) をダンプし始めました。このコマンドは現在 ~2.5 時間実行されており、現在、300 以上のうち ~200 のリビジョンをダンプしています。

svnadmin --deltas \\path\to\repo\folder > \\path\to\backup\folder\dump.svn

ダンプ ファイルは 100 GB を超えており、数え切れないほどあります。この吸盤を 7-zip できることはわかっていますが、100 GB ?! ... o_O

リポジトリには大量のバイナリ データが含まれており、これが問題の一部である可能性がありますが、現時点では、より効率的なバージョン管理システム (存在すると仮定) に切り替えることは現実的ではありません。SVN はここでの生活の一部です。

ホットコピーを使用することを検討しましたが、これはより少ないスペースを占有しますが、古いホットコピーのバックアップの 1 つを使用してみましたが、Subversion 1.7 は必要なファイルの束を見つけることができませんでした。最初にレポをホットコピーしたSVNのバージョンをインストールし、そのレポをダンプして新しいSVNに取得する必要があるようです。このステートメントは、ホットコピーで発生している問題を確認しているようです: http://svn.haxx.se/users/archive-2005-05/0842.shtml

何かが欠けているよう感じます。魔法のようにダンプのサイズを 1/5 にするダンプ用のフラグがあるかもしれません...

他に選択肢はありますか?


更新: 最後のリビジョン #327 がダンプされました。ダンプ ファイルの最終的なサイズは 127 GB です。これは 13.5 GB のリポジトリからのものです。すべてのリポジトリを合わせた場合、おそらくその約 3 倍の容量があります。

4

3 に答える 3

6

毎日のバックアップについては、svnadmin dump. 異なるSVNバージョンとOSを実行している可能性のある新しいサーバーにリポジトリを転送しようとしている場合は、ダンプ方法を使用します。これは、リポジトリをダンプする最も移植性の高い方法ですが、スペース効率があまり良くありません。

そのリンクで参照されているホットコピーの方法を使用することをお勧めします。これにより、ファイルシステムの状態が一貫していることが保証され、構成ファイルとフックスクリプトもコピーされます (ちなみに、svnadmin ダンプはこれらをコピーしないため、不完全なバックアップになってしまいます)。これはリポジトリの直接のコピーにすぎないため、同じサイズであるため、バックアップははるかに管理しやすくなります。

緊急時に、ホットコピーから作成したバックアップを復元する必要がある場合、必要なのは同じメジャー バージョンの SVN (たとえば 1.6 または 1.7) を搭載したマシンと、安全のために同じ OS だけです。その後、このリポジトリ直接使用できるようになるか、svnadmin dumpこの時点で を実行して新しいサーバーに転送できます。

編集: svnsync と hotcopy の比較:

共通の側面:

  • バックアップ中のリポジトリ書き込みを安全に処理
  • バックアップのサイズ = リポジトリのサイズ

ホットコピーの利点:

  • セットアップが簡単
  • フックと設定ファイルをバックアップします

svnsync の利点:

  • 別のマシンへのバックアップが可能
  • 最後の同期以降の新しいリビジョンのみが書き込まれるため、同期は非常に高速であり、これは非常にコンパクトな増分バックアップを実行できることを意味します
于 2012-09-19T21:31:41.667 に答える
4

bahrepとthe_mandrillの提案のおかげで、これらのリポジトリにはsvnsyncを使用することにしました。非常に簡単にセットアップできました。フックや構成ファイルがないため、バックアップするものは他にありません。ホットコピーで問題が発生したため(これらの問題の解決策を提案してくれたthe_mandrillに感謝します)、svnsyncが私たちにとってより簡単な解決策になると判断しました。

the_mandrillが指摘したことに加えて、svnsyncには他の利点があります。

  • メインリポジトリがダウンした場合でも、ユーザーはリンクがあればバックアップリポジトリからダウンロードできます。
  • バックアップは完全にバージョン管理されています。上司から毎晩バックアップをとるように言われましたが、1週間前のバックアップだけを残してください。ホットコピーでそれを行うには、スクリプトを作成する必要があります。svnsyncを使用すれば、それについて心配する必要はありません。

svnsyncを設定するには、次の手順を完了する必要がありました。タイプミスはすみません。すべてのリポジトリは、VisualSVNサーバーを使用してホストされています。

  1. 新しい空のリポジトリを作成します。

    svnadmin create \\computerB\C$\repositories\mirror

  2. ファイルを作成します\mirror\hooks\pre-revprop-change.bat。唯一の内容はこの1行です:

    exit 0

  3. 同期を初期化します

    svnsync init https://computerB.domain.net/svn/mirror https://computerA.domain.net/svn/repo

  4. 2つのリポジトリを同期します

    svnsync synchronize https://computerB.domain.net/svn/mirror https://computerA.domain.net/svn/repo

于 2012-09-19T22:09:00.060 に答える