SVN-Administration

Mehrere SVN-Repositories dumpen

Kein manuelles Dumpen mehr: Ein einziges Shell-Skript iteriert ?ber jeden SVN-Ordner, erstellt Dumps und komprimiert sie auf Wunsch f?r die Langzeitarchivierung.

Deutsche Rechenzentren · tägliche Backups · erfahrenes DevOps-Team
SVN-Repository-?bersicht

Backups sind genauso wichtig wie das Programmieren. Wenn Sie bereits einen einzelnen Repository-Dump erstellen können (siehe unsere Anleitung), lässt sich der Prozess mit wenig Aufwand auf hunderte Repositories skalieren.

Skriptüberblick

Das Skript unten läuft durch jeden Ordner im SVN-Root, führt svnadmin dump aus und schreibt jedes Archiv in ein Zielverzeichnis. Legen Sie es dort ab, wo Sie Shell-Zugriff haben, geben Sie Ausführungsrechte und passen Sie wenige Variablen an.

Systemanforderungen

  • Linux-Server mit Bash/POSIX-Shell
  • Installiertes Subversion (svnadmin-Pfad per whereis svnadmin prüfen)
  • Beschreibbares Verzeichnis für Dumps und genügend Speicherplatz

Legen Sie zuerst das Skript an und machen Sie es ausführbar:

root@server:~# touch multidump.sh
root@server:~# chmod +x multidump.sh

Kopieren Sie den folgenden Inhalt in multidump.sh und passen Sie die drei Variablen oben an Ihre Pfade an:

#!/bin/bash
REPO_BASE=/location/where/your/svn/root/folder/is/
TARGET=/location/of/storage/
SVNADMIN=/usr/bin/svnadmin

cd "$REPO_BASE"
for f in *; do
	FILE="$TARGET$f.dump"
	echo "Dump: $f => $FILE"
    test -d "$f"  &&  $SVNADMIN dump "$f" > "$FILE"
done
                                

Ersetzen Sie REPO_BASE durch das Verzeichnis mit allen Repositories, TARGET durch Ihr Dump-Ziel und SVNADMIN durch den zuvor ermittelten absoluten Pfad.

Unterwegs komprimieren

Wenn Sie Speicherplatz sparen möchten, leiten Sie die Dump-Ausgabe in gzip. Die Struktur bleibt gleich, nur die Dateiendung ändert sich und der Komprimierbefehl kommt hinzu.

#!/bin/bash
REPO_BASE=/location/where/your/svn/root/folder/is/
TARGET=/location/of/storage/
SVNADMIN=/usr/bin/svnadmin

cd "$REPO_BASE"
for f in *; do
	FILE="$TARGET$f.dump.gz"
	echo "Dump: $f => $FILE"
    test -d "$f"  &&  $SVNADMIN dump "$f" | gzip -9 > "$FILE"
done
                                

Führen Sie das Skript manuell aus oder planen Sie es per cron für nächtliche Backups. Sie können die Schleife auch erweitern, um alte Backups zu rotieren oder sie auf einen anderen Host zu kopieren.

Voraussetzungen

Das Skript setzt auf Einfachheit. Stellen Sie nur sicher, dass Sie Konsolenzugriff, ein zuverlässiges SVN-Binary und Speicherplatz für die Dumps haben.

  • Bash oder kompatible Shell
  • svnadmin im Server-PATH verfügbar
  • Lokales oder gemountetes Zielverzeichnis mit genügend Platz