Executando backups instantâneos e incrementais precisos em um servidor remoto

6

Eu tenho alguns servidores Ubuntu (e potencialmente RHEL) que gostaria de fazer backup em um servidor de backup central (via rsh / SSH). Eu gostaria de fazer backups instantâneos e incrementais. O objetivo é que, se um dos servidores de backup morrer repentinamente, eu possa instalar uma imagem de bootstrap, restaurar a partir do backup e, idealmente, estar funcionando imediatamente depois disso.

Esses servidores têm usuários e grupos exclusivos e alguns diferentes lances e uids para os mesmos nomes. Eu estava pensando em rsync (backups locais funcionam bem, e eu tenho controle refinado para que eu possa fazer backup de xattrs e ACLs também), mas percebi que o rsync em um servidor remoto provavelmente não manteria essas nuances como esperado.

Então, qual é a melhor maneira de conseguir isso? Existe um pacote que é comumente usado para esse fim?

    
por MartyMacGyver 25.10.2012 / 04:58

3 respostas

3

Edit: Obrigado a todos! Agora estou ciente de alguns outros pacotes para fazer o trabalho, e sei muito mais sobre internals do rsync. Para aqueles que também podem se perguntar, se você rsync para outra máquina com a opção --numeric_ids, ela não tentará mapear ou criar os UIDs / GIDs, apenas os passará como estão. A propriedade dos itens no diretório de backup pode parecer estranha, mas corresponderá a 1: 1 na restauração (assumindo que parte do que você restaura envolve os arquivos de mapeamento originais, se você estiver restaurando para uma nova máquina).

Aqui está a lista exaustiva de opções que estou usando agora para um backup completo do sistema (como root via sudo). Note que {{my_exclusions}} é um exercício para o leitor (eu sou ainda tendo problemas para fazer isso funcionar como deveria). Observe também o uso de --link-dest ... se esse diretório existir no destino, os links físicos serão feitos em qualquer lugar para os arquivos já presentes no backup anterior, que não foram alterados no atual.

rsync \
  --recursive \
  --links \
  --hard-links \
  --perms \
  --acls \
  --xattrs \
  --owner \
  --group \
  --devices \
  --specials \
  --times \
  --one-file-system \
  --partial \
  --numeric-ids \
  --compress \
  --delete-during \
  --stats \
  --human-readable \
  --progress \
  --verbose \
  --super \
  --log-file=/tmp/my.log \
  --link-dest=/backup/latest_backup \
  --exclude={{my_exclusions}} \
  --link-dest=/backup/latest \
  / \
  {{remote_hostname_or_ip}}:/backup/new_backup
    
por 26.10.2012 / 19:03
4

Sim rsync tem opções para preservar ACLs, atributo estendido, atributos ext2, links físicos, IDs numéricos, dispersão ...

Eu costumava ter um sistema que rsynced sistemas de arquivos em um servidor de backup com um sistema de arquivos btrfs (para fazer snapshots no servidor de backup), e devido a problemas de estabilidade, movido para zfs-on-linux (que infelizmente doesn suporte a POSIX ACLs ainda, mas há um trabalho ao redor).

rsync opções nas quais você pode estar interessado: --archive --one-file-system --xattrs --hard-links --delete --numeric-ids --sparse --acls e, potencialmente, aquelas para sincronização in-loco.

Uma coisa que o rsync não faz é detectar renomeações (embora haja um patch para isso, mas não tenho certeza de quanto pode ser confiável e ele só detecta renomeações de arquivos).

zfs tem zfs send para enviar apenas as modificações feitas desde um determinado instantâneo (para outro zpool do zfs usando zfs receive ). Se bem entendi, esse recurso foi adicionado recentemente a btrfs também. Portanto, se você estiver fazendo o backup de um btrfs FS em outro btrfs FS no último kernel, isso pode ser uma opção.

    
por 25.10.2012 / 09:23
4

Dê uma olhada no rsnapshot , que é um wrapper perl em torno do utilitário de linha de comando rsync . O Rsnapshot adiciona uma camada de configuração extra ao rsync que facilita os backups incrementais. (As versões mais antigas de um arquivo são vinculadas à versão atual quando não são alteradas. Portanto, cada versão incremental do seu sistema de backup é semelhante a uma cópia completa.)

Outra possibilidade similar é a duplicidade , que é baseada em librsync . Eu entendo isso tem uma interface mais polida, mas eu não usei isso. Ou rdiff-backup , que eu acho que é do mesmo desenvolvedor, ou pelo menos era verdade.

Existem, é claro, muitos e muitos sistemas de backup. Aqui está uma lista das disponíveis no FreeBSD, a maioria das quais também estará disponível no Linux. Mas eu acho que os três que mencionei acima são naturais para serem considerados se você está acostumado a rsync . (Uma ferramenta maravilhosa.)

    
por 25.10.2012 / 12:49