usando o rsync para fazer backup dos repositórios do subversion

1

CentOS 5.3     subversão 1.4.2

Estou procurando uma estratégia para fazer backup de nossos repositórios do subversion. Temos cerca de 30 repositórios em um diretório como este:

repos/
     /DEVS
          /reps1
          /reps2
     /WEB
          /reps3
          /reps4
          /reps5
     TOOLS/
          LIBS/
              /reps6
              /reps7
          LOGS/
              /reps8

Nosso requisito é fazer backups diários em execução às 12h.

No entanto, não tenho certeza sobre os repositórios do subversion para configurar o rsync.

Eu preciso fazer um hotcopy ou svn dump, sin sync, etc? Ou eu apenas copio os repositórios como eles são?

Eu nunca usei o rsync antes, então estaremos fazendo o backup de nossos repositórios para um servidor remoto. Preciso do daemon do rsync rodando em ambas as máquinas?

O rsync pode recursivamente fazer backup de todos os repositórios sob os repositórios de diretório?

Muito obrigado por qualquer conselho,

    
por ant2009 07.10.2010 / 10:22

2 respostas

3

Você precisa se certificar de que o repositório não seja alterado (ou seja, novos check-ins) enquanto o backup estiver ocorrendo. Isto pode ser organizado de várias maneiras, mas provavelmente o mais fácil é usar hotcopy para fazer uma nova cópia do repositório (o processo respeita o sistema de versionamento / bloqueio de subversões para que você obtenha uma cópia consistente do repositório no momento mesmo se as pessoas estão usando ativamente), em seguida, fazendo o backup dessa cópia para o site remoto usando o rsync.

O rsync suporta a sincronização de estruturas de diretórios completos, e se o terminal remoto é contactável via SSH (ou similar) você não precisa estar executando o rsync no modo daemon (ele só precisa ser instalado para que possa ser chamado via ssh ).

O comando rsync de que você precisa é provavelmente da forma:

rsync -a /path/to/hotcopy/copy [email protected]:/path/to/backup/location

Isso se conecta a remote.host via SSH como user , inicia um processo rsync e organiza a transferência com ela, fechando-a antes de fechar a sessão SSH. A opção -a (abreviação de --archive) inclui muitas opções, incluindo aquela que faz com que o rsync opere recursivamente em toda a estrutura de diretórios. Você pode querer adicionar a opção --compress também, pois, sem dúvida, o conteúdo do seu repositório será bem compactado, poupando-lhe alguma largura de banda. Veja a página de manual do rsync para mais detalhes.

    
por 07.10.2010 / 12:57
2

A minha maneira favorita de fazer backup de repos svn é usar o svnsync. é incremental para que você não perca dados entre seus backups das 12h. É rápido (o suficiente), já que os replays se comprometem com o repo ao vivo em um backup. A desvantagem é que você precisa configurar uma sincronização para cada repositório - você não pode (ao contrário do rsync) copiar toda a estrutura de diretórios. Ele também não copia seus ganchos e outras configurações, então você precisa copiá-los separadamente. Eu corro de hora em hora para meus repositórios, mas tentei executá-lo em um gancho post_commit (que também funciona) para garantir que todos os commits sejam armazenados em backup o tempo todo.

É fácil de configurar, crie um repositório em branco para armazenar cada backup e defina o hook de alteração de revprop para permitir alterações de revprop (para que você possa sincronizá-las também)

svnadmin create c:\backup_xyz
echo exit /b 0 > hooks/pre-revprop-change

inicialize a sincronização (execute o svnsync no servidor de backup) para obter as alterações:

svnsync init svn://svr/svn/remote_live_repo  file:///c:/local_backup_repo

ou se você quiser enviar para o servidor remoto

svnsync init file:///c:/local_live_repo  svn://svr/svn/remote_backup_repo

inicie a sincronização

svnsync sync file:///c:/local_backup_repo

fácil! Se algum dia ele falhar e você precisar reiniciar uma sincronização interrompida, basta excluir a propriedade que diz qual é a revisão atual da sincronização e tentar novamente:

svn propdel svn:sync-lock --revprop -r 0 file:///c:/local_backup_repo

Você pode usar svnadmin hotcopy para fazer backups ou rsync - mas se você usar o rsync, deverá parar o servidor de repo enquanto executa o backup.

    
por 07.10.2010 / 14:23

Tags