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.