Estratégias de backup do repository SVN

Eu sou novo no SVN e gostaria de saber quais methods estão disponíveis para fazer backup de repositorys em um ambiente Windows?

Você poderia usar algo como (Linux):

svnadmin dump repositorypath | gzip > backupname.svn.gz 

Como o Windows não suporta o GZip, é apenas:

 svnadmin dump repositorypath > backupname.svn 

Nós usamos svnadmin hotcopy, por exemplo:

 svnadmin hotcopy C:\svn\repo D:\backups\svn\repo 

Conforme o livro :

Você pode executar este comando a qualquer momento e fazer uma cópia segura do repository, independentemente de outros processos estarem utilizando o repository.

Você pode, naturalmente, ZIP (de preferência 7-Zip) a cópia de backup. IMHO É a mais simples das opções de backup: em caso de desastre, há pouco a fazer além de descompactá-lo de volta à posição.

Há um script hotbackup.py disponível no site do Subversion que é bastante útil para automatizar backups.

http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in

Aqui está um script Perl que irá:

  1. Backup do repo
  2. Copie-o para outro servidor via SCP
  3. Recupere o backup
  4. Crie um repository de teste a partir do backup
  5. Faça uma verificação de teste
  6. E-mail com erros (via cron)

O roteiro:

 my $svn_repo = "/var/svn"; my $bkup_dir = "/home/backup_user/backups"; my $bkup_file = "my_backup-"; my $tmp_dir = "/home/backup_user/tmp"; my $bkup_svr = "my.backup.com"; my $bkup_svr_login = "backup"; $bkup_file = $bkup_file . `date +%Y%m%d-%H%M`; chomp $bkup_file; my $youngest = `svnlook youngest $svn_repo`; chomp $youngest; my $dump_command = "svnadmin -q dump $svn_repo > $bkup_dir/$bkup_file "; print "\nDumping Subversion repo $svn_repo to $bkup_file...\n"; print `$dump_command`; print "Backing up through revision $youngest... \n"; print "\nCompressing dump file...\n"; print `gzip -9 $bkup_dir/$bkup_file\n`; chomp $bkup_file; my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz"; print "\nCreated $zipped_file\n"; print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`; print "\n$bkup_file.gz transfered to $bkup_svr\n"; #Test Backup print "\n---------------------------------------\n"; print "Testing Backup"; print "\n---------------------------------------\n"; print "Downloading $bkup_file.gz from $bkup_svr\n"; print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`; print "Unzipping $bkup_file.gz\n"; print `gunzip $tmp_dir/$bkup_file.gz`; print "Creating test repository\n"; print `svnadmin create $tmp_dir/test_repo`; print "Loading repository\n"; print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`; print "Checking out repository\n"; print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`; print "Cleaning up\n"; print `rm -f $tmp_dir/$bkup_file`; print `rm -rf $tmp_dir/test_checkout`; print `rm -rf $tmp_dir/test_repo`; 

Fonte de script e mais detalhes sobre o racional para este tipo de backup.

Eu uso o svnsync , que configura um servidor remoto como um espelho / escravo. Nós tivemos um servidor desligado há duas semanas, e eu consegui mudar o escravo para a posição primária com bastante facilidade (só tive que resetar o UUID no repository escravo para o original).

Outro benefício é que a synchronization pode ser executada por um intermediário, e não como uma tarefa em qualquer servidor. Eu tive um cliente para duas VPNs sincronizar um repository entre eles.

svnadmin hotcopy

 svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH 

Este subcomando faz um backup completo do seu repository, incluindo todos os ganchos, arquivos de configuração e, é claro, arquivos de database.

svnbackup no Google Code, um aplicativo de console .NET.

  • Você pode criar um backup de repository ( dump ) com o svnadmin dump .

  • Você pode importá-lo usando o svnadmin load .

Referência detalhada no SVNBook: “Migração de dados do repository usando svnadmin”

Basicamente, é seguro copiar a pasta do repository se o servidor svn estiver parado. (fonte: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )

Então, se você tiver permissão para parar o servidor, faça isso e copie o repository, com algum script ou uma ferramenta de backup. O Cobian Backup se encheckbox muito bem, pois ele pode parar e iniciar serviços automaticamente, e pode fazer backups incrementais, então você está apenas fazendo backup de partes do repository que foram alteradas recentemente (útil se o repository for grande e você estiver fazendo backup em um local remoto ).

Exemplo:

  1. Instalar o Cobian Backup
  2. Adicione uma tarefa de backup:

    • Definir fonte para a pasta do repository (por exemplo, C:\Repositories\ ),

    • Adicionar evento de pré-backup "STOP_SERVICE" VisualSVN,

    • Adicionar evento de pós-backup, "START_SERVICE" VisualSVN,

    • Defina outras opções conforme necessário. Configuramos backups incrementais, incluindo a remoção dos antigos, agendamento de backup, destino, compression incl. arquivamento, divisão etc.

  3. Lucro!

Existem dois methods principais para fazer backup de um servidor svn, primeiro é hotcopy que irá criar uma cópia dos seus arquivos de repository, o principal problema com esta abordagem é que ele salva dados sobre o sistema de arquivos subjacente, assim você pode ter algumas dificuldades tentando repostore este tipo de backup em outro tipo de servidor svn ou outra máquina. existe outro tipo de backup chamado dump, este backup não salvará nenhuma informação do sistema de arquivos subjacente e seu conteúdo pode ser utilizado em qualquer tipo de servidor SVN baseado na subversão tigiris.org.

sobre a ferramenta de backup você pode usar a ferramenta svnadmin (é capaz de fazer hotcopy e dump) a partir do prompt de comando, este console reside no mesmo diretório onde o seu servidor svn vive ou você pode procurar por ferramentas de backup svn.

minha recomendação é que você faça ambos os tipos de backups e os tire do escritório para sua conta de e-mail, serviço amazon s3, serviços ftp ou azure, assim você terá um backup seguro sem ter que hospedar o servidor svn em algum lugar fora do seu escritório.

Aqui uma ferramenta GUI Windows para fazer um despejo de repositorys locais e remotos do subversion:

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

A descrição da ferramenta diz:

Esta ferramenta simplesmente permite fazer um backup de despejo de um repository de subversão local e remoto. O software funciona da mesma maneira que o “svnadmin”, mas não é um frontend GUI. Em vez disso, use diretamente as bibliotecas do subversion para permitir a criação do dump no modo independente sem qualquer outra ferramenta adicional.

Espero que esta ajuda …

Eu gosto de copiar o diretório repo inteiro para o meu local de backup. Dessa forma, se algo acontecer, você pode simplesmente copiar o diretório de volta e estar pronto para ir imediatamente.

Apenas certifique-se de preservar as permissions, se necessário. Normalmente, isso é apenas uma preocupação em máquinas Linux.

Para repositorys hospedados você pode, já que o svn versão 1.7 usa o svnrdump , que é análogo ao svnadmin dump para repositorys locais. Este artigo fornece um bom passo a passo, que essencialmente se resume a:

 svnrdump dump /URL/to/remote/repository > myRepository.dump 

Depois de ter baixado o arquivo de despejo, você pode importá-lo localmente

 svnadmin load /path/to/local/repository < myRepository.dump 

ou faça o upload para o host de sua escolha.

Se você estiver usando o formato de repository FSFS (o padrão), poderá copiar o próprio repository para fazer um backup. Com o antigo sistema BerkleyDB, o repository não é independente de plataforma e você geralmente deseja usar o svnadmin dump.

O tópico da documentação do svnbook para backup recomenda o comando svnadmin hotcopy , já que ele cuidará de problemas como arquivos em uso e outros.

 @echo off set hour=%time:~0,2% if "%hour:~0,1%"==" " set hour=0%time:~1,1% set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2% echo Performing Backup md "\\HOME\Development\Backups\SubVersion\%folder%" svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn 

Este é o arquivo em lote que tenho executando que executa meus backups

Para a solução de backup diário e completo, basta usar os scripts de backup do SVN aqui .

Eu compilei os passos que segui com o propósito de fazer um backup do repository SVN remoto do meu projeto.

 install svk (http://svk.bestpractical.com/view/SVKWin32) install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download) svk mirror //local  svk sync //local 

Isso leva tempo e diz que está buscando os logs do repository. Ele cria um conjunto de arquivos dentro de C:\Documents and Settings\nverma\.svk\local .

Para atualizar este repository local com o último conjunto de alterações do remoto, basta executar o comando anterior de tempos em tempos.

Agora você pode jogar com o seu repository local ( /home/user/.svk/local neste exemplo) como se fosse um repository SVN normal!

O único problema com essa abordagem é que o repository local é criado com uma revisão incrementada pela revisão real no repository remoto. Como alguém escreveu:

O comando svk miror gera um commit no repository recém-criado. Assim, todos os commits criados pela synchronization subseqüente terão números de revisão incrementados em um, em comparação com o repository público remoto.

Mas, isso foi bom para mim, como eu só queria algum backup do repository remoto ao longo do tempo, nada mais.

Verificação:

Para verificar, use o cliente SVN com o repository local como este:

 svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  

Este comando vai para a verificação da última revisão do repository local. No final, diz Checked out revision N Este N foi um a mais do que a revisão real encontrada no repository remoto (devido ao problema mencionado acima).

Para verificar que o svk também trouxe todo o histórico, o checkout do SVN foi executado com várias revisões mais antigas usando -r com 2, 10, 50 etc. Então os arquivos em foram confirmados para seja dessa revisão.

No final, feche o diretório C:/Documents and Settings\nverma/.svk/local/ e armazene o zip em algum lugar. Continue fazendo isso regularmente.

como outros já disseram, o hot-backup.py da equipe do Subversion tem alguns resources interessantes sobre o svnadmin hotcopy

Eu corro uma tarefa agendada em um script python que faz spiders para todos os meus repositorys na máquina e usa o hotbackup para manter vários dias de hotcopies (paranóico de corrupção) e um svnadmin svndump em uma máquina remota. A restauração é realmente fácil – até agora.

1.1 Criar Dump a partir do repository SVN (Subversion)

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

Exemplo real

 svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump 

1,2 despejo criado Gzip

 gzip -9 /path/to/reponame.dump 

Exemplo real

 gzip -9 /backups/testrepo.dump 

1.3 SVN Dump e Gzip Dump com One-liner

 svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz 

Exemplo real

 svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz 

Como Fazer Backup (dump) e Restaurar (carregar) o repository SVN (Subversion) no Linux.
Ref: svn backup de subversão e restauração

Intereting Posts