Eu 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?
Eu 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?
Respostas:
Você pode 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
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
Isso criará um arquivo chamado 'backup.7z' que contém um único arquivo, 'backupname.svn', que é a saída svnadmin dump
.
for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
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 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, 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á:
O script:
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`;
Origem do script e mais detalhes sobre o racional para esse tipo de backup.
Eu uso svnsync , que configura um servidor remoto como um espelho / escravo. Tivemos um servidor inoperante há duas semanas e eu pude mudar o escravo para a posição principal com bastante facilidade (só foi necessário 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 servidor. Eu tive um cliente para duas VPNs sincronizar um repositório entre eles.
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
Esse 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.
Você pode criar um backup de repositório ( dump ) com svnadmin dump
.
Você pode importá-lo usando svnadmin load
.
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, com algum script ou uma ferramenta de backup. O Cobian Backup se encaixa bem 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 local remoto) )
Exemplo:
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. Criamos backups incrementais, incluindo remoção de antigos, agendamento de backup, destino, compactação incl. divisão de arquivos etc.
Lucro!
existem 2 métodos principais para fazer backup de um servidor svn, primeiro é o hotcopy que criará uma cópia dos arquivos do seu repositório, o principal problema com esta abordagem é que ele salva dados sobre o sistema de arquivos subjacente, para que você possa 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 em qualquer tipo de servidor SVN baseado no subversion tigiris.org.
sobre a ferramenta de backup, você pode usar a ferramenta svnadmin (é possível fazer hotcopy e dump) no prompt de comando, esse console reside no mesmo diretório em que o servidor svn mora ou você pode pesquisar no google por ferramentas de backup svn.
minha recomendação é que você faça os dois tipos de backup e os tire do escritório para sua conta de e-mail, serviço amazon s3, ftp ou azure services, dessa forma você terá um backup seguro sem ter que hospedar o servidor svn em algum lugar fora seu escritório.
Aqui uma ferramenta GUI do Windows para fazer um despejo de repositórios de subversão 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 de subversão local e remoto. O software funciona da mesma maneira que o "svnadmin", mas não é uma interface gráfica sobre ele. Em vez disso, use diretamente as bibliotecas do subversion para permitir criar dump no modo autônomo sem nenhuma 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 ir imediatamente.
Apenas certifique-se de preservar as permissões, se necessário. Normalmente, isso é apenas uma preocupação em máquinas Linux.
Para repositórios hospedados, você pode usar o svn versão 1.7 svnrdump
, que é análogo aos svnadmin dump
repositórios locais. Este artigo fornece uma boa explicação, que se resume basicamente 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 faça o upload para o host de sua escolha.
Se você estiver usando o formato do 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 você geralmente deseja usar o dump svnadmin.
O tópico de documentação do svnbook para backup recomenda o svnadmin hotcopy
comando, pois ele resolverá 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 lotes que eu tenho executando que executa meus backups
Para a solução de backup diário e completo, use os 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 diz 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 último conjunto de alterações do remoto, basta executar o comando anterior periodicamente.
Agora você pode jogar com seu repositório local (/home/user/.svk/local
neste exemplo) como se fosse um repositório SVN normal!
O único problema com essa abordagem é que o repositório local é criado com uma revisão incremental pela revisão real no repositório remoto. Como alguém escreveu:
O comando svk miror gera uma confirmação no repositório recém-criado. Portanto, todas as confirmações criadas 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 isso foi bom para mim, pois eu só queria um backup do repositório remoto de tempos em tempos, nada mais.
Verificação:
Para verificar, use o cliente SVN com o repositório local como este:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
Este comando então faz check-out da revisão mais recente do repositório local. No final, diz Checked out revision N
. Essa N
foi mais uma 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 check-out do SVN foi executado com várias revisões mais antigas usando -r
2, 10, 50 etc. Em seguida, os arquivos <local-dir-path-to-checkout-onto>
foram confirmados como sendo dessa revisão.
No final, zip o diretório C:/Documents and Settings\nverma/.svk/local/
e armazene o zip em algum lugar. Continue fazendo isso regularmente.
como já foi dito, o hot-backup.py da equipe do Subversion possui alguns recursos interessantes svnadmin hotcopy
Eu executo uma tarefa agendada em um script python que se aplica a todos os meus repositórios na máquina e usa o hotbackup para manter vários dias de hotcopies (paranóico de corrupção) e svnadmin svndump
em uma máquina remota. A restauração é realmente fácil a partir disso - até agora.
1.1 Criar despejo a partir 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 por Gzip
gzip -9 /path/to/reponame.dump
Exemplo real
gzip -9 /backups/testrepo.dump
1.3 Dump SVN e Dump Gzip com um 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 restaurar (carregar) o repositório SVN (Subversion) no Linux.
Ref: svn subversion backup andrestore