Pergunta

Sou novo no SVN e gostaria de saber quais métodos estão disponíveis para fazer backup de repositórios em um ambiente Windows.

Foi útil?

Solução

Você poderia usar algo como (Linux):

svnadmin dump repositorypath | gzip > backupname.svn.gz

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

svnadmin dump repositorypath > backupname.svn

Outras dicas

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 repositório, independentemente de outros processos estarem usando o repositório.

É claro que você pode compactar (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 na 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. Faça backup do repositório
  2. Copie-o para outro servidor via SCP
  3. Recuperar o backup
  4. Crie um repositório de teste a partir do backup
  5. Faça uma verificação de teste
  6. Enviar um e-mail para você com quaisquer 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 do script e mais detalhes sobre o racional desse tipo de backup.

eu uso svnsync, que configura um servidor remoto como espelho/escravo.Um servidor caiu há duas semanas e consegui mudar o escravo para a posição primária com bastante facilidade (só tive que redefinir o UUID no repositório escravo para o original).

Outro benefício é que a sincronização pode ser executada por um intermediário, e não como uma tarefa em qualquer um dos servidores.Tive um cliente para duas VPNs sincronizando um repositório entre elas.

cópia instantânea do svnadmin

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

Este subcomando faz um backup “quente” completo do seu repositório, incluindo todos os ganchos, arquivos de configuração e, claro, arquivos de banco de dados.

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

Referência detalhada no SVNBook:"Migração de dados do repositório usando svnadmin"

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

Portanto, se você tiver permissão para parar o servidor, faça-o e apenas copie o repositório, seja com algum script ou com uma ferramenta de backup.O Cobian Backup se encaixa perfeitamente aqui, pois pode parar e iniciar serviços automaticamente e pode fazer backups incrementais para que você faça backup apenas de partes do repositório que foram alteradas recentemente (útil se o repositório for grande e você estiver fazendo backup em um local remoto ).

Exemplo:

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

    • Defina a origem para a pasta do repositório (por exemplo C:\Repositories\),

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

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

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

  3. Lucro!

existem 2 métodos principais para fazer backup de um servidor svn, o primeiro é o hotcopy que criará uma cópia dos arquivos do seu repositório, o principal problema com esta abordagem é que ela salva dados sobre o sistema de arquivos subjacente, então você pode ter algumas dificuldades ao tentar repostore esse tipo de backup em outro tipo de servidor SVN ou em outra máquina.existe outro tipo de backup chamado dump, esse backup não salva nenhuma informação do sistema de arquivos subjacente e é potável para qualquer tipo de servidor SVN baseado no subversion tigiris.org.

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

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

Aqui está uma ferramenta GUI do Windows para fazer um dump de repositórios subversion locais e remotos:

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

A descrição da ferramenta diz:

Esta ferramenta simples permite fazer um backup de despejo de um repositório subversion local e remoto.O software funciona da mesma maneira que o "svnadmin", mas não é uma interface GUI para ele.Em vez disso, use diretamente as bibliotecas do Subversion para permitir a criação de dump no modo autônomo sem qualquer outra ferramenta adicional.

Espero que esta ajuda ...

Gosto de copiar todo o diretório repo para o meu local de backup.Dessa forma, se algo acontecer, você pode simplesmente copiar o diretório de volta e estar pronto para prosseguir imediatamente.

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

Para repositórios hospedados você pode desde a versão 1.7 do svn usar svnrdump, que é análogo a svnadmin dump para repositórios locais.Esse artigo fornece um bom guia, que essencialmente se resume a:

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

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

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

ou carregue-o para o host de sua escolha.

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

O tópico de documentação do svnbook para backup recomenda o svnadmin hotcopy comando, pois cuidará de questões 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 estou executando e que realiza meus backups

Para a solução de backup diário e completo basta usar o Scripts de backup SVN aqui.

Eu compilei as etapas que segui com o objetivo de fazer um backup do repositório 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 <remote repository URL>

svk sync //local

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

Para atualizar este repositório local com o conjunto mais recente de alterações do repositório remoto, basta executar o comando anterior de vez em quando.

Agora você pode brincar com seu repositório local (/home/user/.svk/local neste exemplo) como se fosse um repositório SVN normal!

O único problema com esta abordagem é que o repositório local é criado com incrementos de revisão pela revisão real no repositório remoto.Como alguém escreveu:

O comando svk miror gera um commit no repositório recém-criado.Portanto, todos os commits criados pela sincronização subsequente terão números de revisão incrementados em um em comparação com o repositório público remoto.

Mas tudo bem para mim, pois eu só queria algum backup do repositório remoto de vez em quando, nada mais.

Verificação:

Para verificar, use o cliente SVN com o repositório local assim:

svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  <local-dir-path-to-checkout-onto>

Este comando então verifica a revisão mais recente do repositório local.No final diz Checked out revision N.Esse N foi uma a mais que a revisão real encontrada no repositório remoto (devido ao problema mencionado acima).

Para verificar se 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 <local-dir-path-to-checkout-onto> foram confirmados como sendo daquela revisão.

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

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

Eu executo uma tarefa agendada em um script python que rastreia todos os meus repositórios na máquina e usa 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 com isso - até agora.

1.1 Criar dump do repositório 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 pelo 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 (despejo) e restauração (carregar) do repositório SVN (Subversion) no Linux.
Referência: svn subversion backup e restauração

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top