Como posso fazer backups incrementais atômicos de um sistema Linux em execução usando freeware?

5

Estou procurando uma ferramenta de backup incremental para usar em um sistema linux baseado em disco em execução, como o Ubuntu ou algo assim, e uma ferramenta que é freeware.

O Clonezilla pode fazer backups precisos, mas apenas quando o sistema está ocioso.

O Acronis for linux pode fazer backups precisos em um sistema em execução, mas não é freeware. Existem métodos que o Acronis e o BTRFS usam para capturar as alterações do sistema de arquivos à medida que são executados, de modo a emular o efeito de parar o sistema operacional enquanto ele está funcionando. Estou procurando algo que faça isso.

O rsync, o dump e muitas outras ferramentas inadequadas são sugeridas e até mesmo usadas para essa finalidade, mas não se pode confiar na captura precisa de um sistema operacional em execução. rsync, é bom quando usado em um sistema de arquivos estático, mas não em um sistema de arquivos em execução multi-threaded.

É surpreendente para mim quantos estão sob a crença de que é possível fazer um backup preciso de um sistema de arquivos em execução apenas copiando-o de uma forma ou de outra. Tendo construído um pequeno mecanismo multitarefa há alguns anos, estou bem ciente do perigo de uma tarefa poluir o trabalho de outra. Somente se um backup for executado como uma tarefa atômica, com todas as outras tarefas interrompidas enquanto funciona, pode ser assegurado capturar um backup restaurável 100% preciso. Não há nada pior do que ter um backup em que você confia, e acreditamos que vai salvá-lo, apenas para tê-lo corrompido quando você tentar usá-lo.

Eu preciso disso para um linux de desktop antigo, e não para uma configuração virtual.

    
por Eliptical view 27.07.2016 / 06:18

4 respostas

6

Como você mencionou, o BTRFS pode fazer isso. É assim que faço backup regularmente do meu laptop (que tem um tempo de atividade de 9 semanas, 5 dias enquanto digito isso).

Dentro do meu sistema de arquivos BTRFS, tenho subvolumes. A maneira como você divide seus dados em subvolumes e como aninhá-los não é importante aqui, desde que você não esteja usando a raiz do sistema de arquivos para armazenar dados dos quais deseja fazer backup.

Os seguintes comandos são para ilustrar a sintaxe e as possibilidades, eu recomendo envolvê-los em um script que é executado como um cronjob ou systemd.timer.

Para tirar um instantâneo de um subvolume:

btrfs subvolume snapshot -r <source> <dest>

Para serializar um instantâneo:

btrfs send <snapshot>

Para serializar um instantâneo relativo a um antigo (ou seja, diferencial):

btrfs send -p <start> <end>

Para gerar um diff, compactando instantaneamente e enviando para o servidor de backup, com o monitoramento "progress":

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh [email protected] "cat > /backups/name.bz2"

Para fazer semelhante, mas recriar os subvolumes do BTRFS no servidor de backup em vez de apenas fluxos BTRFS compactados:

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh [email protected] "pbzip2 -d | \
    btrfs receive <target>"

Para restaurar, aplique seus instantâneos para um novo sistema de arquivos BTRFS, via btrfs receive .

Aqui estão mais informações sobre Backups Incrementais BTRFS

    
por 27.07.2016 / 19:09
3

Como @ mark-k-cowan disse que você pode fazer isso com os snapshots do btrfs. O btrfs é muito imaturo para mim. Usando o zfs e sua captura instantânea seria melhor. Como disse @ brady-dean, os instantâneos do LVM são um método agnóstico do sistema de arquivos. Instantâneos de LVM podem ter um enorme impacto negativo no desempenho.

O Acronis tem um módulo do kernel que funciona na camada de bloco para criar instantâneos. O Datto Block Driver é um módulo do kernel GPLv2 (ahem "freeware") que faz a mesma coisa. (Isenção de responsabilidade: eu nunca usei isso.)

    
por 28.07.2016 / 02:42
-1

Não é realmente possível clonar uma máquina em execução. Você pode escrever um script para adicionar arquivos específicos a um tarball. Você também pode usar instantâneos do LVM para fazer backup da unidade do sistema.

    
por 27.07.2016 / 08:51
-1

Use o rsync (ou uma variante que eu lembrarei em breve e edite em ...)

Faça um backup completo com ele e faça incrementais (ou diferenciais)

Ele também está disponível em várias plataformas, permitindo que você faça backup de e para vários sistemas operacionais diferentes

Veja também: link

Ele deve estar bem para a maioria dos arquivos em um sistema em execução, se não todos (alguns sendo gravados em arquivos serão truncados, mas isso é normal se você fizer backup durante a execução) (você deve usar dd também para salvar o extra informações de setores, como os setores de boot, se você pretende uma recuperação completa) ... ou como você disse, use um fs com essa capacidade embutida.

Se você pretende fazer backup de um banco de dados em execução, use o db dumping facility primeiro e faça backup dele.

    
por 27.07.2016 / 12:23

Tags