É o Rsync como subversão, mas para um servidor?

4

Estou tentando aprender a usar o rsync. Desejo criar backups diários do meu servidor de produção.

Agora eu executo o comando

rsync -azr /var/www/* [email protected]:/var/www

Agora, digamos que um dia, eu quero reverter o diretório / var / www / no meu servidor de produção para a versão do mês passado. Como eu digo ao rsync para recuperar a versão N?

Ao ler que o rsync apenas copia as diferenças entre src e dest, assumi que o rsync funciona como subversion, onde você comete alterações em um destino e mantém o controle de todas as versões, com a opção de fazer checkout de qualquer versão a qualquer momento. É assim que funciona o rsync? É como subversão, mas para um servidor inteiro? Isso seria ótimo porque significa que não preciso fazer cópias ssh completas para meus backups noturnos.

    
por John 19.04.2010 / 00:48

6 respostas

5

O rsync espelha sua estrutura de arquivos atual para o outro lado. Envia apenas as diferenças nos arquivos, mas não mantém revisões.

link

pode estar mais perto do que você deseja fazer. Para um método menos "manual", o link

    
por 19.04.2010 / 00:50
7

O rsync não é um sistema de controle de versão. Ele opera nos objetos do sistema de arquivos e adiciona, atualiza e os exclui diretamente, conforme necessário. Outras ferramentas podem adicionar algum tipo de controle de versão, mas não há como reverter usando o rsync simples.

    
por 19.04.2010 / 00:51
1

Você pode, com um pouco de cola do Bash no seu script, fazer um backup diário incremental; Eu uso uma versão modificada deste script para fazer backup dos meus arquivos do servidor de desenvolvimento: link

    
por 19.04.2010 / 00:59
1

Eu faço um backup usando as seguintes opções:


      -avP --stats --compress \
      --delete \
      -b --backup-dir ${DIRBACKUPBACKUP} \
      --bwlimit=20 \
      --include=/etc/ \
      --include=/etc/** \
      --include=/var/ \
      --include=/var/vmail/ \
      --include=/var/vmail/** \
      --exclude=* \
      [email protected]:/

onde ${DIRBACKUPBACKUP} é um nome de diretório exclusivo (eu uso a data e a hora atuais).

Não há nenhuma maneira automática de recuperar, mas eu deveria ser capaz de reconstruir como o diretório ficou em um dia específico usando essas opções.

    
por 19.04.2010 / 02:27
1

Se o seu objetivo é conseguir reverter o código para outro período de tempo, seria prudente mantê-lo em um repositório de subversão e usar algo como Capistrano para conferir o teste / produção.

Com o Capistrano, meus desenvolvedores podem enviar por e-mail ao nosso grupo de controle de qualidade a tag e o número de revisão do aplicativo PHP que eles desejam implantar para teste. O controle de qualidade pode editar o arquivo do Capistrano para incluir essa revisão e tag e, em seguida, executar ENVIRONMENT=testing;cap deploy . O Capistrano fará o login em nossos servidores de teste e implementará essa versão do código de acordo com a receita que escrevi para eles.

A mudança para produção é o mesmo processo, mas definimos ENVIRONMENT=production

Se você precisar reverter para uma versão anterior, poderá executar cap rollback para um determinado ambiente, e o Capistrano fará logon no servidor e apontará o código para a versão anterior que foi instalada a partir da subversão.

Com essa abordagem, eu só preciso fazer backup dos dados variáveis, como o repositório do Subversion, as receitas do Capistrano e os bancos de dados do PostgreSQL. Com as ferramentas de gerenciamento Capistrano e config, posso implementar um novo host em minutos.

    
por 28.06.2011 / 02:32
0

Eu já coloquei meu / etc e / var / www em um repositório svn para reverter rapidamente e usar o tar para backups incrementais e backups completos.

Por padrão, o rsync apenas assegura que dois diretórios estejam sincronizados, mas, como outros apontaram, é possível rotear ele para ter links simbólicos (ou hard) para backups mais antigos, caso os arquivos não tenham sido alterados.

Nenhuma razão pela qual você não pode usar os dois.

    
por 19.04.2010 / 05:48

Tags