Script de Backup (dump) SVN – Subversion

Continuando a série de scripts de backup, hoje iremos ver como realizar o backup de versionamentos SVN (subversion).

Podemos começar este poste com as palavras de um sábio:

“Existem dois tipos de pessoas, aquelas que fazem backup regularmente e aquelas que nunca tiveram uma falha do disco rígido”

Existem uma série de cenários e estratégias de backup. A maioria delas sugerem uma cópia de segurança, uma vez por dia, geralmente nas primeiras horas. Este, porém, pode não funcionar bem com um ambiente com mudanças rápidas onde os dados muda várias vezes por hora. Este tipo de ambiente é geralmente em desenvolvimento de software, visto que o código pode se modificar completamente várias vezes em questão de horas, e muitas vezes um único backup diário pode não funcionar.

#!/bin/sh
################################################
#
# Backup Completo dos repositorios SVN
#
# @author Jonas Ferreira
# @email jonas [at] jf [dot] eti [dot] br
# @version v0.01
# @reldate 2012-04-09
################################################

# data
# ——————–
bakdate=$(date +%Y%m%d%H%M)
echo “——————————–”
echo “Rodando o script de Backup – SVN – $bakdate”
echo “——————————–\n”

# Local onde estao os repositorios
# —————————
svnrepos=”/srv/svnrepos”

# Local onde sera gerado o DUMP
# ————————
bakdest=”/home/username/SVN-BACKUPS”

# Local onde os dumps serao tranferidos, apos o DUMP
# —————————————-
baktousb=”/media/USB/Extra-BACKUP”

# Entrando na pasta dos repositorios
cd $svnrepos

# Certificando se tem acesso de escrita na pasta de destino
if [ -d “$bakdest” ] && [ -w “$bakdest” ] ; then

for repo in *; do
# gerando um dump para cada projeto
echo “Executando: svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump \n”
# Finalizando o backup
svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump

# copiando os arquivos para a unidade remota
if [ -d “$baktousb” ] && [ -w “$baktousb” ] ; then
echo “Copiando para $baktousb …\n”
cp $bakdest/$repo-$bakdate.svn.dump $baktousb
fi
done
else
echo “Nao eh possivel continuar o processo de backup”
echo “$bakdest *NAO* eh um diretorio gravavel.”
fi

# Finalizando o script de backup
echo “\n\n=================================”
echo ” – Backup Completo :-]”

Anexo aqui o script personalizado por mim, onde faz-se o backup Full e transfere-se para um servidor na rede por meio de cifs. (Servidor SVN rodando no CentOS 6.2).
Download do Script

Para restaurar o dump, é só executar:
$ svnadmin load /var/www/svn/repos < repos-backup Fontes: - Instalação do SVN no CentOS
http://www.niden.net/
(exemplos de backup incremental)
http://www.hossainkhan.info/content/shell-script-backup-all-your-svn-repositories

Leave a Reply

Your email address will not be published. Required fields are marked *