Backup RSync do repositório Subversion com o Rsyncrypto

4

Este é um crosspost do stackoverflow porque acho que posso conseguir um público-alvo muito qualificado aqui

A situação

Eu tenho um repositório Subversion muito grande que estou tentando fazer backup de forma eficiente. O tamanho do repositório é de cerca de 6 GB e está crescendo. Alguns commits grandes têm cerca de 500 a 1GB de tamanho.

Estou tentando fazer backup desse repositório para um local externo, por meio de um link ascendente da Internet.

Explicando o tamanho dela

To whomever is wondering, the whole production environment for various sites (config files, EXEs, data files) is kept in this one repository so that we can rollback to an existing working version and track the changes to the production setup. Code is kept on a different repository.

Como

Aqui está o que eu estou realmente fazendo:

  1. Backup do repositório para uma pasta de trabalho no servidor usando o "svnadmin hotcopy SRCDIR TGTDIR"
  2. Criptografe e comprima esse repositório usando "rsyncrypto -r SRCPATH DSTPATH KEYSPATH CERTIFICATE"
  3. Faça o backup dessa versão criptografada em um local externo usando "rsync -Crtv" (na verdade, cwRsync porque estou executando no Windows)

O problema

Primeiro, devo dizer que funciona, embora ainda tenha um problema subjacente.

O problema está no fato de que eu esperava que cada vez que o processo fosse executado, apenas os arquivos / dados de revisão new seriam copiados ([repos] / db / revs / 0 /. ..) requerendo apenas largura de banda e tempo quando um commit grande é feito. No entanto, em vez disso:

  • Se eu executo apenas a etapa 3 muitas vezes, o rsync se comporta como deveria e nada é copiado porque nada mudou.
  • Se eu executar apenas as etapas 2 e & # 3 muitas vezes, o rsync também se comporta bem. A versão envenenada é a mesma toda vez e o rsync não precisa transmitir nada.
  • Mas, parece que toda vez que eu executo todas as três etapas (com um novo commit sendo feito para o repositório) todo o repositório está sendo re-carregado integralmente . Assim, derrotando todo o propósito de usar o rsync em primeiro lugar.

É como se os arquivos em [repos] / db / revs / 0 / ... estivessem mudando toda vez que eu fizesse uma hotcopy.

As perguntas

Este é um comportamento esperado de "svnadmin hotcopy" que os [repos] / db / revs / 0 / ... estão mudando de um hotcopy para outro?

Alguma sugestão ou opção que eu possa usar para fazer este hotcopy rsync friendly ou dizer rsyncable ?

Não tenho certeza se o uso de 'svnadmin dump' em todo o repositório produziria um arquivo "rsyncable" .

    
por philibertperusse 15.09.2010 / 17:17

2 respostas

0

Quando você criptografa / compacta o repositório, qualquer pequena alteração nos dados subjacentes (o repositório) é distribuída por todo o (s) arquivo (s) criptografado / compactado (s). Assim, uma alteração de um byte pode se propagar em todo o conjunto de dados criptografados / compactados. Então, do ponto de vista do rsync, tudo mudou.

    
por 15.09.2010 / 17:24
0

Os arquivos em db/revs/ não estão mudando, mas seus timestamps são. --size-only poderia ser a resposta.

    
por 17.01.2013 / 23:18