Backup com Mercurial e Robocopy?

6

O problema

Gostaríamos de fazer backup de nossos arquivos críticos de vários compartilhamentos de rede para um disco rígido removível. Queremos automatizar o backup para que não tenhamos que nos lembrar de executá-lo. Precisa terminar durante a noite. Além disso, queremos ser capazes de preservar várias versões de cada arquivo para que possamos nos livrar dos erros de nossos usuários mais facilmente.

Informações básicas

Trabalho em uma grande empresa baseada no Windows com uma seção de TI centralizada responsável por todos os backups. Seus backups são voltados para a recuperação de desastres e não para erros do usuário, e exigem aprovação de gerenciamento de nível superior para recuperações não relacionadas a desastres. Várias vezes notamos que nossos backups falharam, não fomos notificados. Eu não tenho direitos administrativos para o servidor ou minha área de trabalho. Estamos tentando fazer backup de cerca de 198.000 arquivos, com cerca de 240 gigabytes. Esses arquivos raramente mudam. Nossa unidade de backup é de um terabyte.

Minha solução proposta

O que eu gostaria de fazer é escrever um arquivo em lote usando Robocopy com a opção / mir junto com Mercurial SCM para armazenar todas as versões do arquivo. Eu faria um hg add seguido por um hg commit antes de cada execução do Robocopy para salvar o estado atual, e então fazer uma cópia espelhada das estruturas do arquivo. O problema é que o / mir excluirá todas as pastas não presentes na origem, e o Mercurial armazenará o repositório em uma pasta .hg na pasta de destino.

Alguém sabe como eu poderia convencer o Mercurial a armazenar a pasta .hg em outro lugar, ou convencer o Robocopy a não excluí-lo do destino?

Estou tentando evitar escrever um programa personalizado para copiar.

    
por Andrew Neely 06.07.2012 / 16:21

3 respostas

4

Para executar um espelho enquanto ignora determinadas extenções de arquivos, tente isto:

robocopy c:\temp\source c:\temp\dest /e /purge /xf *.hg

Eu testei um pouco aqui e parece deixar os arquivos .hg sozinhos no destino

Eu também recomendo o sinalizador / z (reinicializável para arquivos grandes) e tive que recorrer ao sinalizador / fft no passado ao lidar com servidores com diferentes granularidades de tempo: link

edite: ... meu exemplo acima estava assumindo arquivos chamados * .hg ... para fazer o mesmo e ignorar diretórios chamados * .hg, use isto:

robocopy c:\temp\source c:\temp\dest /e /z /purge /xd *.hg
    
por 09.07.2012 / 15:31
3

Primeiramente, gostaria de salientar que você provavelmente está pegando o problema do lado errado: em teoria, você deve escrever um business case para uma solução de backup melhor, fazer com que o seu gerenciamento apresente isso para a TI central e então deixe-os resolver por si mesmos.

Agora, estando fora do caminho, você enfrentará vários problemas com essa proposta. O primeiro é que o Mercurial não é construído para o que você quer fazer e nem é robocopy. Você pode encontrar maneiras de resolver o problema desclassificando a própria localização de backup como sendo um repositório, mas isso não é muito eficiente.

Em vez disso, eu investigaria duas faixas diferentes.

O primeiro é usar o Volume Shadow Copy para criar um histórico de snapshots que você armazena em uma matriz de disco diferente no servidor (parece que você está executando o Windows no seu servidor de arquivos e suponho que você tenha uma versão recente de 2008 ou superior). Isso lhe dará uma maneira fácil de recuperar arquivos do usuário (na verdade, os usuários poderão recuperar os próprios arquivos), mantendo o tamanho do backup próximo ao tamanho dos dados. A desvantagem disso é que você precisará de acesso de administrador no servidor para configurá-lo, de modo que não haja nenhuma maneira de envolver seus administradores de TI (o que, pessoalmente, acho que é uma boa ideia, mas isso é apenas eu).

A segunda opção é morder a bala e obter um software de backup "real". Se os seus dados forem importantes o suficiente, você provavelmente poderá criar um caso de negócios para esse investimento. Caso contrário, você sempre poderá usar o backup do Cobian para criar cópias incrementais dos arquivos como uma tarefa no nível do usuário ou, se realmente quiser usar o mercurial, use o backup do Cobian em vez do Robocopy para criar a cópia do repositório.

    
por 09.07.2012 / 15:45
3

Como você já está falando sobre o Windows e o robocopy, tenho outra solução sem a necessidade do Robocopy ou do Mercurial. O material fora do site fica um pouco complicado, mas você teria, pelo menos, backups quase em tempo real de todos os seus arquivos críticos.

Você tem duas opções para começar:

  1. Inscreva-se no Microsoft Partner Network e pague os US $ 300 para uma assinatura do Action Pack
  2. Compre um servidor com Microsoft DPM da Dell ou da HP

De qualquer forma você acaba com uma caixa DPM completa ou pelo menos o software que você pode instalar em uma máquina de reposição. O DPM é ótimo para fazer backups de compartilhamento de rede, com backups tão pequenos quanto a cada minuto. Ele também faz cópias de sombra para que os usuários possam estar usando os arquivos quando eles são copiados. Por fim, ele também permite opções de recuperação do usuário final, o que faz com que você fique fora do mix, se quiser.

Se você precisar de recursos externos, também poderá adquirir uma unidade de fita ou até mesmo uma unidade de fita incorporada em seu novo servidor sofisticado. Se você preferir fazer armazenamento em disco removível, dê uma olhada em um produto chamado Firestreamer. Ele permite que você use o disco para armazenamento em disco removível.

De qualquer forma, a longo prazo, esta é uma solução muito melhor e é muito mais confiável do que um trabalho cron usando robocopy e algum local de armazenamento, confie em mim! Em geral, seus custos variam entre US $ 500 e US $ 5.000, dependendo do que você quer fazer, mas vale a pena a tranquilidade e a estabilidade.

    
por 09.07.2012 / 16:06