Frage Die beste Art, Subversion-Backups zu machen?


Was ist der beste Weg Subversion-Backups zu machen (auf einem Debian-basierten Server).

Ist es Svnadmin zu verwenden?

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

Oder vielleicht nur, um das Verzeichnis zu tarnen, wo die Repositories sind?

tar -cvzf svn.backup.tar.gz /var/subversion/

Was sind die Vor- und Nachteile der oben genannten?

Vielen Dank Johan


Aktualisieren: Dies ist ein kleiner Server mit nur einer Handvoll Repos. So inkrementelle Sicherungen werden wahrscheinlich nicht benötigt, Ich denke, es ist besser, sich darauf zu konzentrieren, es einfach zu halten.

Aktualisieren: Ich habe packs Wrapper-Skript (das wiederum ein Wrapper für svn-hot-backup war), um eine vollständige Sicherung durchzuführen, und dann eine vollständige Wiederherstellung auf einem anderen sauberen Computer durchgeführt. Allerdings habe ich den Teil "SVN_HOTBACKUP_NUM_BACKUPS = 10" entfernt, da dieser für mich nicht funktionierte.

Bitte beachten Sie, dass ich das Gefühl hatte, dass es einfach war und das Ergebnis sehr nahe an dem Ziel lag. Aber wie Manni hier darauf hingewiesen hat, svn-hot-backup / "svnadmin hotcopy" zu verwenden, ist eine zuverlässigere Methode, da Teer von Zeit zu Zeit beschädigte Backups erstellen könnte, wenn Sie Pech haben.


10
2017-08-10 13:32


Ursprung




Antworten:


Suchen Sie nach dem Skript "svn-hot-backup". Es sollte mit Subversion geliefert werden, und enthält die ganze Logik, um zu tun, was Sie wollen, plus automatisches Roll-out von alten Backups. Ich habe das folgende Wrapper-Skript geschrieben, das svn-hot-backup verwendet, um als nächtlicher Cronjob zu laufen, um einen einzelnen Server mit mehreren Repositories zu sichern, der leicht modifiziert wurde, um verallgemeinert zu werden.

#!/bin/bash

#
# Dumps the svn repos to a file and backs it up
# to a local directory.

#Keeps the last 10 revisions
REPODIR="/var/repos"
BAKDIR="/data/backup/svn"
PROG="/usr/local/sbin/svn-hot-backup"
REPOLIST='repo1 repo2 repo3'

if [ ! -x "${PROG}" ]
then
        echo "svnbak: Could not execute \`${PROG}\`"
        exit 1
fi

for repo in ${REPOLIST}
do
    # Dump the database to a backup file
    echo "svnbak: Dumping subversion repository:  ${repo}"
    SVN_HOTBACKUP_NUM_BACKUPS=10 nice ${PROG} --archive-type=gz ${REPODIR}/${repo} ${BAKDIR}/${repo} &> /tmp/svnbak.$$

    if [ "$?" -eq "1" ]
    then
        echo "svnbak: Hot backup on '${repo}' failed with message:"
        /bin/cat /tmp/svnbak.$$
    fi

    /bin/rm /tmp/svnbak.$$
done

exit 0

11
2017-08-10 13:48



Und da dies ein Wrapper für svnadmin hotcopy ist, rate ich zur Wiederherstellung einfach die Dateien unter / var / subversion / repos /? Muss ich etwas anderes machen? - Johan
'svnadmin verify' wäre auch eine gute Ergänzung zum Skript, um zu überprüfen, ob das gerade kopierte Repository tatsächlich gültig ist. - Andrioid
@Johan - ja, kopiere sie einfach. "Das resultierende Backup ist ein voll funktionsfähiges Subversion-Repository, das als Ersatz für Ihr Live-Repository eingefügt werden kann, sollte etwas schief gehen." von svnbook.red-bean.com/nightly/de/... - Jonik
Sie können auch den Befehl find verwenden, um nach Repositorys zu suchen, die sich nur innerhalb der letzten N Tage geändert haben. Suchen Sie einfach in der Ausgabe des Befehls find nach 'db / current'. Dies hat den Vorteil, dass Sie diese REPOLIST-Variable nicht ständig aktualisieren müssen. Außerdem müssen Sie in SVN 1.8 nicht mehr auf ein leeres Ziel kopieren, sondern können es an eine vorherige Kopie anhängen. Dies wird wahrscheinlich die Sicherheitskopien um 2-3 Größenordnungen beschleunigen. - tgharold


Hast du den ... gesehen Dokumentation zu diesem Thema?

Grundsätzlich haben Sie zwei Möglichkeiten:

  1. Führen Sie inkrementelle Sicherungen mit aus svnadmin dump
  2. Sichern Sie Ihr gesamtes Repository mit svnadmin hotcopy

Einfach eine Kopie des Verzeichnisses erstellen nicht eine Option, da sich Ihr Repository möglicherweise ändert, während die Kopie erstellt wird.

Ob Sie an inkrementellen oder vollständigen Backups interessiert sind, hängt von Ihrer Paranoia, der Größe Ihres Repositorys, Ihren Anforderungen und Ihrer Infrastruktur ab.


9
2017-08-10 13:42





Ich empfehle SVNBackup aufgrund der Tatsache, dass es möglich ist inkrementelle Sicherungen.

Warum ist das wichtig? Nun, wenn Sie ein großes Entwicklungsteam haben und Sie täglich eine Subversion-Sicherung haben und Ihr System 12 Stunden nach dem alten Backup ausfällt, ist der gesamte Arbeitstag verloren.

Wenn Sie vollständige Sicherungen durchführen (was SVN-Hotcopy ist es oft am Tag, dass Sie Ihren Repository-Rechner unnötig belasten, was ungeduldige Entwickler irritieren wird.

Als Bonus; Ich empfehle auch Backup-PC als Backup-Lösung. Es kann inkrementelle Remote-Sicherungen durchführen und kann viel Speicherplatz sparen, wenn Sie identische Dateien auf verschiedenen Systemen sichern.


4
2017-08-10 21:43





Ich verwende svnsync, um ein Backup in einem ansonsten schreibgeschützten Repository zu erstellen, das selbst mit veralteten Kopien (Tag, Woche, Monat) gesichert wird.


4
2017-10-10 04:40



svnbook.red-bean.com/de/1.5/... - Johan
Aus dem Handbuch "Und obwohl es nur wenige Möglichkeiten gibt, dies zu tun, ist seine primäre Stärke, dass es ferngesteuert arbeiten kann". - Johan
+1 für die Erwähnung von svnsync - like dump und hotcopy Es hat sicherlich seinen Nutzen. Dies kann auch für lokale inkrementelle Backups nützlich sein. - Jonik
Wenn sich der Sicherungsserver an einem anderen Speicherort befindet, können Sie eine große Anzahl von Wiederherstellungsfällen in einem einzigen Schritt beheben - Zac Thompson
Zwei Dinge, wenn Sie die svnsync-Route gehen: 1) Wenn Sie einen großen Repo-Start mit einem Svnadmin-Hotcopy haben, da es viel schneller ist und Daten hinter / db / revs sichert 2) fügen Sie den svnsync-Aufruf zum Quell-Repo hinzu post-commit hook, so dass der Spiegel immer auf dem neuesten Stand ist. (Aber behalte das aus den Haken des Spiegels, damit der Spiegel nicht versucht, sich selbst zu spiegeln!) - Robert Calhoun


Sie können inkrementelle Backups mit machen svnadmin Wenn Sie es wünschen, sollten Sie die hot-backup.py bevor du dein tar-Archiv erstellst.

Hier ist ein Artikel über die Sicherung von SVN Repos. Wie auch immer, beim Lesen der SVN Buch ist ein guter Ausgangspunkt wie gesagt.


2
2017-08-10 13:44





Ich sichere mehrere 100 GB + SVN-Repositories mit reinem alten rsync. svnadmin dump und svnadmin hotcopy würde Tage in diesen Repositories dauern.

Eine andere Sache zu beobachten ist svnadmin dump Sicherungen und Hook-Skripts werden nicht gesichert.


0
2018-01-29 23:27





Hier ist, was ich mit meinen Repositories mache: Verwenden Sie einen Ordner-Backup-Dienst wie Dropbox (hier ist ein Link zu ihrer Linux-Version). Sie machen die Dropbox einfach zum Stamm Ihres Repositorys (oder sogar darüber) und es wird jedes Mal gesichert, wenn sich eine Datei ändert. Es wird nicht nur auf mehreren Computern verfügbar sein, Sie können es auch online aufrufen und Versionen davon haben.

Es gibt mehrere solcher Online-Backup-Dienste - die meisten sind kostenlos bis zu 2 GB.


-1
2017-08-10 14:04



Das ist gut für kleine persönliche Repos, aber kaum der "beste Weg", den das Poster sucht. Ein Problem besteht darin, dass Sie keine Konsistenz mit dem gleichzeitigen Zugriff durch mehrere Entwickler gewährleisten können. Die primären Ziele eines Backups sollten Zuverlässigkeit und Konsistenz anstelle von Online-Zugriff und Versionen sein. - Martijn Heemels