Frage

Ich bin neu bei SVN und ich würde gerne wissen, welche Methoden zur Verfügung stehen für die Sicherung der Repositorys in einer Windows-Umgebung?

War es hilfreich?

Lösung

Sie könnte so etwas wie (Linux):

svnadmin dump repositorypath | gzip > backupname.svn.gz

Da Windows nicht unterstützt GZip-es ist einfach:

svnadmin dump repositorypath > backupname.svn

Andere Tipps

Wir verwenden svnadmin hotcopy, z.B.:

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

Wie pro das Buch:

Sie können diesen Befehl ausführen, zu jeder Zeit und stellen Sie eine sichere Kopie des repository, unabhängig davon, ob andere Prozesse, die mithilfe des repository.

Natürlich können Sie ZIP (vorzugsweise 7-Zip) die backup-Kopie.IMHO, Es ist die meisten einfach in den backup-Optionen:im Falle einer Katastrophe gibt es wenig zu tun, andere als entpacken Sie es zurück in position.

Es gibt eine hotbackup.py ein Skript zur Verfügung, die auf der Subversion-Website, die sehr praktisch für die Automatisierung von backups.

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

Hier ist ein Perl-Skript, dass wird:

  1. Backup der repo -
  2. Kopieren Sie es auf einem anderen server via SCP
  3. Die Sicherung abrufen
  4. Erstellen Sie ein test-repository aus der Sicherungskopie
  5. Machen Sie einen test Kasse
  6. E-Mail mit Fehler (über cron)

Das Skript:

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`;

Script Quelle und mehr details über die rationale für diese Art von backup.

Ich benutze svnsync,, das festlegt, einen remote-server als mirror/slave.Wir hatten einen server gehen vor zwei Wochen, und ich war in der Lage, schalten Sie die slave-in die primäre position, Recht leicht (nur hatte Sie zum zurücksetzen der UUID, die auf die slave-repository, auf das original).

Ein weiterer Vorteil ist, dass die sync-kann ausgeführt werden, indem ein Mitte-Mann, sondern als eine Aufgabe, auf beiden server.Ich habe einen client, um zwei VPNs sync eine repository zwischen Ihnen.

svnadmin hotcopy

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

Dieser Unterbefehl ermöglicht den vollen "hot" - backup-repository, einschließlich alle hooks, Konfigurationsdateien und, natürlich, sind Datenbank-Dateien.

svnbackup über Google Code .NET-Konsolenanwendung.

  • Sie können, erstellen Sie einen backup-repository (dump) mit svnadmin dump.

  • Sie können dann importieren Sie es verwenden svnadmin load.

Detaillierte Referenz in das SVNBook:"Repository data migration using svnadmin"

Grundsätzlich ist es sicher zu kopieren Sie den repository-Ordner, wenn der svn-server ist gestoppt.(Quelle: https://groups.google.com/forum/?fromgroups#!Thema/visualsvn/i_55khUBrys%5B1-25%5D )

Also, wenn Sie erlaubt sind, den server zu stoppen, tun Sie es, und kopieren Sie nur das repository, entweder mit einem Skript oder ein backup-tool.Cobian Backup passt hier schön, wie Sie können stoppen und starten von Diensten automatisch, und Sie können inkrementelle sicherungen, damit Sie nur die Sicherung Teile-repository, das in letzter Zeit geändert haben (nützlich, wenn das repository ist groß und Sie sind für die Sicherung auf remote-Standort).

Beispiel:

  1. Installieren Sie Cobian Backup
  2. Fügen Sie eine backup-Aufgabe:

    • Legen Sie die Quell-repository-Ordner (z.B. C:\Repositories\),

    • Fügen Sie pre-backup Ereignis - "STOP_SERVICE" VisualSVN,

    • Hinzufügen post-backup Ereignis -, "START_SERVICE" VisualSVN,

    • Stellen Sie andere Optionen nach Bedarf. Wir haben Sie inkrementelle sicherungen einschließlich der Entfernung des alten backup-Plan -, Ziel -, Kompressions-inkl.Archiv-splitting usw.

  3. Gewinn!

es sind 2 wichtigsten Methoden zur Sicherung einem svn-server zunächst ist hotcopy, dass wird schaffen eine Kopie Ihres repository-Dateien, das größte problem bei diesem Ansatz ist, dass es speichert Daten über die zugrunde liegenden Dateisystem, so haben Sie möglicherweise einige Schwierigkeiten zu repostore diese Art der Sicherung in einem anderen svn-server oder anderen Art Maschine.es ist eine andere Art von backup namens dump, diese Sicherungskopie wird nicht speichern Sie alle Informationen von der zugrunde liegenden Dateisystem und Ihr Trinkwasser zu jeder Art von SVN-server mit Sitz in tigiris.org subversion.

über das backup-tool können Sie das Dienstprogramm svnadmin(es ist in der Lage zu tun hotcopy und dump) aus der Eingabeaufforderung, diese Konsole befindet sich im selben Verzeichnis, in dem Sie den svn-server lebt, oder Sie können google für svn-backup-tools.

meine Empfehlung ist, dass Sie beide Arten von backups und Holen Sie aus dem Büro zu Ihrem E-Mail-Konto, amazon s3-service, ftp-oder azure-services, so dass Sie haben eine securityy backup ohne host-svn-server irgendwo aus Ihrem Büro.

Hier eine Windows GUI-tool für machen Sie einen dump von lokalen und entfernten subversion-Repositorys:

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

Die tool-Beschreibung sagt:

Mit diesem einfach Werkzeug zu ermöglichen eine dump-backup von lokalen und entfernten subversion-repository.Die software funktioniert in der gleichen Art und Weise der "svnadmin" aber ist nicht ein GUI-frontend über es.Verwenden Sie stattdessen direkt an die subversion-Bibliotheken zu ermöglichen, zu erstellen Müllkippe im standalone-Modus ohne andere Werkzeug.

Hoffe, dass dies helfen...

Ich möchte nur kopieren Sie den gesamten repo-Verzeichnis zu meinem backup-Speicherort.Auf diese Weise, wenn etwas geschieht, kann man nur kopieren Sie das Verzeichnis zurück und bereit sein, zu gehen sofort.

Stellen Sie sicher, dass Berechtigungen erhalten, wenn Sie gebraucht werden.Normalerweise ist das nur ein Problem auf Linux-Maschinen.

Für gehostete Repositorys Sie können da die svn-version 1.7 verwenden svnrdump, die ist Analog zu svnadmin dump für die lokalen Repositorys.Diese Artikel ein schönes Spaziergang-durch, die im wesentlichen darauf an:

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

Nachdem Sie heruntergeladen haben die dump-Datei, die Sie importieren können es lokal

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

oder laden Sie Sie auf dem host Ihrer Wahl.

Wenn Sie die FSFS repository-format (Standard), dann kopieren Sie das repository selbst, ein backup zu machen.Mit den älteren BerkleyDB-system, das repository ist nicht Plattform unabhängig und würden Sie wollen in der Regel svnadmin dump.

Die svnbook Dokumentation Thema für backup empfiehlt die svnadmin hotcopy Befehl, wird es kümmern sich um Themen wie Dateien, die in Gebrauch und so.

@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

Dies ist die Batch-Datei habe ich ausgeführt, dass meine Backups durchführt

Für die tägliche und vollständige backup-Lösung nur verwenden die SVN-backup-Skripts hier.

Ich habe zusammengestellt, die Schritte, die ich gefolgt, zum Zwecke der Erstellung einer Sicherungskopie des entfernten SVN repository meines Projekts.

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

Das kostet Zeit und sagt, dass es das abrufen der Protokolle aus dem repository.Es erstellt eine Reihe von Dateien innerhalb des C:\Documents and Settings\nverma\.svk\local.

Um dieses update lokales repository mit den neuesten änderungen aus dem remote-einen, nur den vorherigen Befehl ausführen von Zeit zu Zeit.

Jetzt können Sie spielen mit Ihrem lokalen repository (/home/user/.svk/local in diesem Beispiel), als ob es eine normale SVN-repository!

Das einzige problem bei diesem Ansatz ist, dass das lokale repository wird erstellt, mit einer revision-Schritten von der aktuellen revision im repository.Als jemand, der schrieb:

Die svk miror Befehl erzeugt einen commit in das gerade erstellte repository.Also alle die commits erstellt, indem die anschließende synchronisieren, wird die Revisionsnummer um eins erhöht, im Vergleich zu dem entfernten öffentlichen repository.

Aber das war OK für mich, da ich wollte nur einige backup von remote-repository Zeit zu Zeit, sonst nichts.

Prüfung:

Um zu überprüfen, verwenden Sie den SVN-client mit dem lokalen repository wie dieser:

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

Dieser Befehl geht dann zur Kasse Sie die neueste Version aus dem lokalen repository.Am Ende heißt es Checked out revision N.Diese N war man mehr als die eigentliche überarbeitung fand im remote-repository (wegen dem oben beschriebenen problem).

Um zu überprüfen, dass svk brachte auch die ganze Geschichte, die Sie SVN checkout ausgeführt wurde, mit verschiedenen älteren Versionen verwenden -r mit 2, 10, 50 etc.Dann die Dateien in <local-dir-path-to-checkout-onto> bestätigt wurden, werden von dieser revision.

Am Ende, zip-Verzeichnis C:/Documents and Settings\nverma/.svk/local/ und speichern Sie die zip-irgendwo.Halten Sie tun dies regelmäßig.

wie andere gesagt haben, hot-backup.py von der Subversion-team hat einige nette features über einfach svnadmin hotcopy

Ich betreibe einen geplanten task auf ein python-Skript, das die Spinnen für alle meine repositories auf der Maschine, und verwendet hotbackup können Sie mehrere Tage im Wert von hotcopies (paranoid Korruption) und ein svnadmin svndump auf einer remote-Maschine.Die Wiederherstellung ist wirklich easy aus, dass - so weit.

1.1 Erstellen-Dump von SVN (Subversion) - repository

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

Reales Beispiel

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

1.2 Gzip Erstellt Dump

gzip -9 /path/to/reponame.dump

Reales Beispiel

gzip -9 /backups/testrepo.dump

1.3 SVN-Dump-und Gzip-Dump mit One-liner

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

Reales Beispiel

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

Wie Backup (dump) und Wiederherstellen (laden) SVN (Subversion) - repository Linux.
Ref: svn-subversion backup andrestore

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top