Backup di un repository SVN

 

Tra le operazioni di gestione ordinaria di un repository subversion rientra quella del backup.

Un modo può essere quello di effettuare un mirroring remoto del repository, come spiegato in un precedente articolo. Spesso però si vuole ottenere un backup in un archivio da poter trasferire su un supporto ottico o comunque da conservare.

E' possibile effettuare questa operazione di backup utilizzando il svnadmin hotcopyIn questo modo non sarà necessario mettere offline il repository prima di procedere con il backup.

Una volta copiato il repository, potremmo anche comprimerlo.

Queste operazioni sono riassunte nel seguente script di shell:

#!/bin/sh

if [ -z "$2" ]; then
        echo "Usage: $0 <repository> <destination>"
        exit
fi

IN=$1
OUT=$2
OUT_ARCHIVE=$OUT.tar.bz2

echo "Backup repository svn ($IN) in corso..."
TMPDIR=`mktemp -d /tmp/.svn-backup.XXXXXX` || exit 1
svnadmin hotcopy $IN $TMPDIR
echo Compressione in corso...
tar -cjpf $OUT_ARCHIVE -C $TMPDIR .
rm -rf $TMPDIR
echo Backup effettuato con successo

Se inserite i comandi appena descritti in un file che chiameremo svn-backup ai quali siano stati dati permessi di esecuzione (chmod a+x svn-backup) potrete effettuare un backup eseguendo:

svn-backup pathDelRepository fileDiDestinazione

otterrete in output il file:

  • fileDiDestinazione.tar.bz2

Il file .tar.bz2 è il backup da conservare.

Nota: il file di backup così creato non sarà necessariamente portabile tra diverse architetture hardware;  è possibile effettuare un dump "portabile"  utilizzando il comando

svnadmin dump /pathDelRepository > fileDiBackup