La meilleure façon de faire des sauvegardes de Subversion?

Quelle est la meilleure façon de faire des sauvegardes de Subversion (sur un serveur basé sur Debian).

Est-ce pour utiliser svnadmin?

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

Ou peut-être juste pour parcourir le répertoire où se trouvent les dépôts?

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

Quels sont les avantages et les inconvénients de ce qui précède?

Merci Johan


Mise à jour : c'est un petit serveur avec seulement une poignée de repos. Donc, les sauvegardes incrémentielles ne sont probablement pas nécessaires, je pense qu'il vaut mieux se concentrer sur la simple utilisation.

Mise à jour : J'ai utilisé le script packs wrapper (qui était à son tour une enveloppe pour svn-hot-backup) pour effectuer une sauvegarde complète, puis une récupération complète sur un autre ordinateur propre. Cependant, j'ai supprimé cette partie "SVN_HOTBACKUP_NUM_BACKUPS = 10" car elle ne fonctionnait pas pour moi.

S'il vous plaît noter que je pense que c'était un peu simple et le résultat était très proche de simplement tar le dir. Mais comme Manni a souligné ici, utiliser svn-hot-backup / "svnadmin hotcopy" est une méthode plus fiable, car tar pourrait créer des sauvegardes corrompues de temps en temps si vous n'avez pas de chance.

Recherchez le script svn-hot-backup. Il devrait expédier avec subversion, et contient toute la logique pour faire ce que vous voulez, plus automagic déploiement d'anciennes sauvegardes. J'ai écrit le script wrapper suivant qui utilise svn-hot-backup pour s'exécuter en tant que cronjob nocturne pour sauvegarder un serveur unique avec plusieurs référentiels, légèrement modifiés pour être généralisés.

 #!/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 

Avez-vous vu la documentation à ce sujet?

Fondamentalement, vous avez deux options:

  1. Effectuez des sauvegardes incrémentielles à l'aide de svnadmin dump
  2. Sauvegardez votre dépôt entier en utilisant svnadmin hotcopy

Simplement faire une copie du répertoire n'est pas une option car votre dépôt peut changer pendant la copie.

Que vous soyez dans des sauvegardes incrémentales ou complètes dépend de votre quantité de paranoïa, de la taille de votre dépôt, de vos besoins et de votre infrastructure.

Je recommande SVNBackup en raison du fait qu'il est capable de faire des sauvegardes incrémentielles .

Pourquoi est-ce important? Eh bien, si vous avez une grande équipe de développement et que vous avez une sauvegarde quotidienne de Subversion et que votre système échoue 12 heures dans l'ancienne sauvegarde, la journée complète est perdue.

Si vous effectuez des sauvegardes complètes (quelle SVC est Hotcopy ), plusieurs fois par jour, vous allez charger inutilement votre machine de dépôt, ce qui irrite les développeurs impatients.

En prime; Je recommande également Backup-PC en tant que solution de sauvegarde. Il peut faire des sauvegardes de sauvegarde incrémentielles et est capable de sauvegarder beaucoup d'espace si vous sauvegardez des fichiers identiques sur différents systèmes.

J'utilise svnsync pour sauvegarder dans un dépôt autrement en lecture seule, qui est lui-même sauvegardé avec des copies anciennes (jour, semaine, mois)

Vous pouvez effectuer des sauvegardes d'appoint avec svnadmin si vous le souhaitez, vous devez exécuter hot-backup.py avant de créer votre archive tar.

Voici un article sur la sauvegarde de svn repos. Quoi qu'il en soit, la lecture du livre SVN est un bon point de départ comme indiqué précédemment.

Je sauvegarde plusieurs dépôts svn de 100 Go + avec rsync simple. svnadmin dump et svnadmin hotcopy prendraient des jours sur ces dépôts.

Une autre chose à regarder est svnadmin dump ne sauvegarde pas les verrous et les scripts de crochets.

Voici ce que je fais avec mes dépôts: utilisez un service de sauvegarde de dossiers comme Dropbox (voici un lien vers leur version Linux ). Vous simplifiez simplement la Dropbox de la racine de votre référentiel (ou même au-dessus) et il est sauvegardé chaque fois qu'un fichier change. Non seulement cela sera disponible sur les ordinateurs, mais vous pourrez y accéder en ligne et avoir des versions de celui-ci.

Il existe plusieurs de ces services de sauvegarde en ligne – la plupart sont gratuits jusqu'à 2 Go.