A melhor maneira de fazer backups do Subversion?

10

Qual é a melhor maneira de fazer backups do Subversion (em um servidor baseado em Debian).

É para usar o svnadmin?

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

Ou talvez apenas para tar o diretório onde os repositórios estão?

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

Quais são os prós e contras dos itens acima?

Obrigado Johan

Atualizar : Este é um pequeno servidor com apenas alguns repos. Então backups incrementais provavelmente não são necessários, Acho que é melhor se concentrar em mantê-lo simples.

Atualizar : Eu usei o script packs wrapper (que por sua vez era um wrapper para svn-hot-backup) para fazer um backup completo e depois fiz uma recuperação completa em outro computador limpo. No entanto, removi a parte "SVN_HOTBACKUP_NUM_BACKUPS = 10", uma vez que não estava funcionando para mim.

Por favor, note que eu sinto que foi meio simples e o resultado foi muito próximo de simplesmente colocar o dir. Mas como Manni apontou aqui para usar svn-hot-backup / "svnadmin hotcopy" é um método mais confiável, já que o tar poderia criar backups corruptos de tempos em tempos se você não tiver sorte.

    
por Johan 10.08.2009 / 15:32

7 respostas

11

Procure pelo script svn-hot-backup. Ele deve ser fornecido com subversão e contém toda a lógica para fazer o que você deseja, além da execução automática de backups antigos. Escrevi o seguinte script wrapper que usa svn-hot-backup para executar como um cronjob noturno para fazer backup de um único servidor com vários repositórios, ligeiramente modificados para serem generalizados.

#!/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
    
por 10.08.2009 / 15:48
9

Você viu a documentação neste ?

Basicamente, você tem duas opções:

  1. Executar backups incrementais usando svnadmin dump
  2. Faça backup de todo o seu repositório usando svnadmin hotcopy

Simplesmente fazer uma cópia do diretório não é uma opção porque seu repositório pode mudar enquanto a cópia está sendo feita.

Se você está em backups incrementais ou completos depende da quantidade de paranóia, do tamanho do seu repositório, de suas necessidades e de sua infraestrutura.

    
por 10.08.2009 / 15:42
4

Eu estou recomendando o SVNBackup devido ao fato de que ele é capaz de fazer incremental backups .

Por que isso é importante? Bem, se você tiver uma grande equipe de desenvolvimento e tiver um backup diário do Subversion e seu sistema falhar 12 horas no backup antigo, o trabalho do dia inteiro será perdido.

Se você fizer backups completos (o que SVN hotcopy é) muitas vezes ao dia você está causando carga desnecessária em sua máquina de repositório, isso irá irritar desenvolvedores impacientes.

Como bônus; Eu também recomendo Backup-PC como uma solução de backup. Ele pode fazer backups remotos incrementais e é capaz de economizar muito espaço se você estiver fazendo backup de arquivos idênticos em sistemas diferentes.

    
por 10.08.2009 / 23:43
4

Eu uso o svnsync para fazer o backup em um repositório somente de leitura, que é feito em backup com cópias antigas (dia, semana, mês)

    
por 10.10.2009 / 06:40
2

Você pode fazer backups incrementais com svnadmin se desejar, você deve executar o hot-backup.py antes de fazer seu arquivo tar.

Veja um artigo sobre fazendo backup de svn repos. De qualquer forma, ler o livro do SVN é um bom ponto de partida, como mencionado anteriormente.

    
por 10.08.2009 / 15:44
0

Eu faço backup de vários repositórios svn de 100 GB + com rsync antigo. svnadmin dump e svnadmin hotcopy demorariam dias nesses repositórios.

Outra coisa a observar é que svnadmin dump não faz backup de bloqueios e bloqueia scripts.

    
por 30.01.2011 / 00:27
-1

Veja o que eu faço com meus repositórios: use um serviço de backup de pastas como o Dropbox (aqui está um link para na versão para Linux ). Você simplesmente faz do Dropbox a raiz do seu repositório (ou até mesmo acima dele) e obtém backup toda vez que um arquivo é alterado. Além de estar disponível em computadores, você poderá acessá-lo on-line e ter versões dele.

Existem vários serviços de backup online - a maioria é gratuita até 2 GB.

    
por 10.08.2009 / 16:04