Qual é a melhor solução para manter backup e controle de revisão em sites ativos?

StackOverflow https://stackoverflow.com/questions/27292

  •  09-06-2019
  •  | 
  •  

Pergunta

Qual é a melhor solução para manter backup e controle de revisão em sites ativos?

Como parte do meu trabalho, trabalho com vários sites ativos.Precisamos de um meio eficiente de manter backups das pastas ativas ao longo do tempo.Além disso, atualizar esses sites pode ser um incômodo, especialmente se ocorrer uma alteração no ambiente ativo por qualquer motivo.

O ideal seria um controle de origem descomplicado.Implementei o SVN por um tempo, o que foi ótimo como uma semi-solução para backup, bem como controle de revisão (fácil reversão de alterações temporárias ou significativas) etc.

Infelizmente, o SVN coloca diretórios ocultos .SVN em todos os lugares, o que causa problemas, especialmente quando outros desenvolvedores fazem alterações na estrutura de pastas ou copiam/movem diretórios de sites.Já ouvi o argumento de que se trata de uma questão de educação, etc.mas a abordagem adotada pelo SVN simplesmente não é uma solução prática para nós.

Estou pensando que talvez uma solução de backup incremental seja melhor.

Outras possibilidades incluem:

  1. SVK, que é apenas linha de comando, o que se torna um problema.Além disso, não tenho certeza de quão apropriado isso seria.
  2. Mercurial, talvez com alguns gatilhos para ocultar o componente distribuído que não é necessário neste caso e seria desnecessariamente complicado para outros desenvolvedores.

    Experimentei brevemente o Mercurial, mas não consegui encontrar uma boa maneira de separar o repositório e mantê-lo constantemente sincronizado com a cópia de trabalho da pasta ativa.Talvez como uma solução de controle de origem (tornando o repositório e a pasta ativa no mesmo lugar) combinada com outra solução de backup, esse possa ser o caminho a seguir.

    Uma desvantagem do Mercurial é que ele não coloca pastas vazias sob controle de origem, o que é problemático para sites que geralmente possuem pastas vazias como locais de espaço reservado para uploads de arquivos, etc.

  3. Sincronizar novamente, que eu realmente não investiguei.

Eu realmente aprecio seus conselhos sobre a melhor maneira de manter backups de sites ativos, de preferência com um meio fácil de recuperar rapidamente versões anteriores.

Respostas de resposta:

  • @Kibbee:

    • Não se trata tanto de educação, mas de falta de familiaridade com nada além de VSS e falta de tempo/esforço para aprender qualquer outra coisa.

    • A abordagem xcopy/7-zip parece razoável, eu acho, mas rapidamente ocuparia muito espaço, certo?

    • No que diz respeito ao controle de origem, acho que gostaria que o controle de origem apenas dissesse que "este é o estado da pasta agora, vou lidar com isso e se não conseguir combinar as coisas, a culpa é sua, eu ' vou apenas começar novas histórias" em vez de fracassar.

  • @Steve M:

    • Sim, essa é uma maneira melhor de fazer isso, mas exigiria uma mudança cultural significativa.Dito isto, gosto muito dessa abordagem.
  • @mk:

    • Legal, não pensei em usar o Rsync para implantar.Isso apenas carrega as diferenças?Substituir todo o diretório ativo sempre que fazemos uma alteração seria problemático devido ao tempo de inatividade do site.

Ainda estou curioso para ver se existem opções mais tradicionais

Foi útil?

Solução

Você ainda pode usar o SVN, mas em vez de fazer uma verificação no seu ambiente ativo, faça uma exportação, dessa forma nenhum diretório .svn será criado.A desvantagem, claro, é que nenhuma alteração de código pode ocorrer em seu ambiente ativo.Isto é uma coisa boa.

Como regra geral, alterações de código em sistemas de produção nunca devem ser permitidas.A alteração deve ser feita e testada em um ambiente de desenvolvimento/teste/UAT e, uma vez confirmada como OK, você pode marcar esse código no SVN com algo como RELEASE-x-x-x.Em seguida, no sistema ativo, exporte o código com essa tag.

Outras dicas

Usamos a opção 3.Sincronizar novamente.Eu escrevi um script bash para fazer isso junto com algumas verificações extras, mas aqui estão os princípios básicos do que ele faz.

  1. Faça uma etiqueta para empurrar para viver.
  2. Execute svn export nessa tag.
  3. rsync para viver.

Até agora tem dado certo.Não precisamos nos preocupar com conflitos de usuários ou ter um usuário separado para executar o svn na máquina de produção.

Qualquer solução de controle de origem que você escolher terá problemas se as pessoas moverem, excluirem ou adicionarem arquivos e não informarem o sistema de controle de origem sobre isso.Não tenho conhecimento de nenhum item de controle de origem que possa resolver esse problema.

No caso em que você simplesmente não consegue educar as pessoas que trabalham no projeto[1], talvez seja necessário apenas usar instantâneos diários.Algo tão simples como um arquivo em lote usando xcopy para uma unidade de rede e possivelmente 7-zip na linha de comando para compactá-lo para que não ocupe muito espaço provavelmente seria a solução mais simples.

[1] Eu não acreditaria nisso, provavelmente apenas mais um caso de pessoas sendo muito teimosas e não dispostas a aprender ou a fazer "trabalho extra".Não importa quanto tempo o controle de origem pode economizar quando eles precisam voltar para versões anteriores ou quando duas pessoas editaram o mesmo arquivo.

O rsync carregará apenas as diferenças.Eu não usei pessoalmente, mas Marco Peregrino escrevi há muito tempo sobre como até lida com diferenças binárias brilhantemente.

svn+rsync parece uma solução fantástica.Vou ter que tentar isso no futuro.

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