Manchmal ist es ganz nützlich, wenn man Backups macht – keine Frage – jedoch sollte man auch mitberücksichtigten, dass das Medium, auf welchem die Backups liegen verschwinden können. Worst-Cases: Es brennt, jemand bricht in die Wohnung ein etc… – in einem solchen Fall wäre es ganz nett, wenn man noch an einer anderen Location ein Backup hat :)
Ich möchte hiermit einen Weg aufzeigen, mit welchem man sein SVN-Server an eine andere Location sichern kann:

  • Auf dem Server der anderen Location ein neues Repository anlegen:
    $ svnadmin create dest
  • Um mit svnsync ein Repository zu synchronisieren muss man noch eine neue Hook anlegen, die es dem svnsync-User erlaubt das Repository zu synchronisieren:
    $ cat < dest/hooks/pre-revprop-change
    #!/bin/sh
    USER="$3"
    if [ "$USER" = "svnsync" ]; then exit 0; fi
    echo "Only the svnsync user can change revprops" >&2
    exit 1
    EOF
    $ chmod +x dest/hooks/pre-revprop-change
  • Nun kann man die initiale Synchronisation anstoßen:

    $ svnsync init file://`pwd`/dest \ svn+ssh://sourcesvnserver/source/repos
    Copied properties for revision 0
    $

  • Danach kann das Repository einmal komplett synchronisiert werden:

    $ svnsync sync file://`pwd`/dest
    Committed revision 1.
    Copied properties for revision 1.
    Committed revision 2.
    Copied properties for revision 2.
    Committed revision 3.
    Copied properties for revision 3.
    ...

Kurze Notiz am Rande: In diesem Beispiel wird svn+ssh genutzt. Hierzu ist es angebracht, sich mit einem Key-File anzumelden. Des Weiteren sollte noch ein Cron-Job eingerichtet werden, um in einem bestimmten Zeitabschnitt das Repository zu synchronisieren.

Kommentar schreiben