SVN Repositories sichern und wiederherstellen

Wie immer gibt es mehrere Möglichkeiten um ein SVN Repository zu sichern und auch wiederherzustellen.
An dieser Stelle sollen nun die beiden Möglichkeiten des lokalen Sichern und Wiederhestellens und das Sichern und Wiederherstellen eines entfernten SVN Repositories (Remote Repository) mittels svnrdump beschrieben werden.

Subversion, egal ob Remote und Lokal

Lokales SVN Repository sichern über SSH

Das Sichern erfolgt auf der SSH Konsole mittels einer Dump Anweisung unter Angabe einer Datei in welche gesichert werden soll.

svnadmin dump /PfadZumRepository > svnexport.dump
            

Die erstellte Datei svnexport.dump enthält nun alle Repository Revisionen.
Zu beachten ist, dass keine Hooks mit gesichert werden. Diese befinden sich in dem Order /PfadZumRepository/hooks.

Lokales SVN Repository wiederherstellen über SSH

Das Einspielen des Dump Files ist ebenso einfach, allerdings muss natürlich vorher eine Repository erzeugt (svnadmin create /pfad/zum/repository) werden, falls noch nicht vorhanden.
Des Weiteren muss es sich nicht um das gleiche Repository handeln und auch der Pfad kann ein vollkommen anderer sein.

svnadmin load /PfadZumRepository < svnexport.dump
            

Komprimierter Dump und Restore

Da in der Regel die Dumps recht große Dateien sind, empfiehlt es sich den Dump zu komprimieren. Das man kann man in einer Zeile erledigen und man spart locker 50% Speicher.

svnadmin dump /PfadZumRepository | gzip -9 > svnexport.dump
            

Der Restore eines gzip komprimierten SVN Repositories ist ebenfalls als Einzeiler möglich.

gunzip -c svnexport.dump | svnadmin load /PfadZumRepository
            

Backup und Restore von SVN Repositories aus der Ferne

Entfernte SVN Repository sichern

Das Sichern erfolgt auch hier auf einer SSH Konsole mittels svnrdump.
Es wird lediglich die URL des Repositories benötigt und wie zuvor, der Dateiname für den Dump.

svnrdump dump http://domain.tld/repo > svnexport.dump
            

Die erstellte Datei svnexport.dump enthält nun alle Repository Revisionen.
Der Remote Export ist mit SVN Servern ab Version 1.4 möglich!

SVN Repository Remote wiederherstellen

Das Einspielen des Dump Files ist ebenso einfach, allerdings muss natürlich vorher eine Repository erzeugt werden.
Für den Remote Import wird ein SVN Server ab Version 1.7 vorausgesetzt.

svnrdump load http://domain.tld/repo < svnexport.dump
# oder, wenn Benutzername und Passwort benötigt werden
svnrdump load http://domain.tld/repo < svnexport.dump --username admin --password admin --non-interactive
            

Im Optimalfall startet nun der Import und alles ist gut.
In 99% aller Fälle aber erhält man diesen Fehler:

svnrdump: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svnrdump: E175008: At least one property change failed; repository is unchanged
svnrdump: E175002: Error setting property 'rdump-lock':
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
            

In diesem Fall muss das Ziel SVN Repository ein Hook eingerichtet werden.
Das geht natürlich nur, wenn man Zugriff auf das Dateisystem hat.
Und zwar muss im Hook Verzeichnis die ausführbare Datei pre-revprop-change mit dem Exit 0 erstellt werden .

printf '#!/bin/sh\nexit 0' > pre-revprop-change && chmod +x pre-revprop-change
            

Nun sollte der Remote Import durchlaufen.


Kleiner Tipp, unser SVN Hosting ist bereits dafür vorbereitet Ihre Dumps Remote zu importieren.

Letzte Änderung: 15.10.2015