O que acontece se o rsnapshot / rdiff-backup for interrompido no meio de uma transferência?

20

A pergunta diz tudo:

O que acontece se o rsnapshot ou o rdiff-backup for interrompido no meio de uma transferência?

Eu sei que o rsnapshot tenta fazer um instantâneo completo do seu sistema de maneira rotativa, e o rdiff-backup faz um backup diferencial, que será baseado nos arquivos anteriormente salvos por trás dele.

Então: o que acontece se for interrompido no meio?

Isso resulta em um "instantâneo incompleto"?

Outros instantâneos dependentes deste serão corrompidos? (Certamente não, mas ...?)

fem
fonte
11
Não seria muito claro se você tivesse separado essa pergunta em duas perguntas separadas?
Andol
2
@andol Se ele estivesse procurando informações sobre como se recuperar de uma transferência interrompida, acho que seria melhor que duas perguntas. Interpretei que isso é mais um pedido de comparação de quantos problemas você teria se usasse cada utilitário, como se fosse uma variante de "me ajude a decidir qual usar".
ændrük
Obrigado Andol; mas não, acho que isso é uma pergunta. Basicamente, "o que acontece se o rsnapshot / rsync for interrompido no meio da transferência?", E acho que as ferramentas abrangem um nicho específico; portanto, a IMO não garante duas perguntas separadas. Eu coloquei a questão do 'instantâneo incompleto' como um resultado potencial para fins de esclarecimento.
emf

Respostas:

22

Meu entendimento é que ...

O rdiff-backup detectará o incremento incompleto na próxima vez em que for executado. Ele excluirá o incremento incompleto para que o local do backup seja o mesmo como se a tentativa de backup interrompido nunca tivesse sido iniciada.

O rsnapshot é um pouco mais complicado, porque sua rotina é mais gradual e varia dependendo do uso das opções sync_firste use_lazy_deletes.

  • Se você usar sync_firste rsnapshot syncfor interrompido, basta executar rsnapshot syncnovamente para corrigir as coisas. Se você executar acidentalmente rsnapshot <backup level>nesse ponto, o ponto de backup mais recente permanecerá incompleto e será realizado rotações.
  • Se você não usar sync_first, ficará com um ponto de backup incompleto que é um híbrido da versão antiga e da nova dos arquivos. A menos que você gire manualmente cada ponto de backup, o ponto de backup incompleto será realizado rotações.
  • Nos dois casos, a execução rsnapshot <backup level>fará com que o ponto de backup mais antigo seja perdido, a menos que use_lazy_deletesesteja ativado.

Observe isso sync_firste use_lazy_deletesuse o custo de usar mais espaço em disco.


Um lembrete / aviso de isenção de responsabilidade: isso deve ser óbvio, mas nunca confie cegamente no conselho de outras pessoas na internet. Se você planeja usar o rdiff-backup ou o rsnapshot para algo de missão crítica , leia todas as palavras do manual e teste, teste, teste tudo você mesmo!

ændrük
fonte
11
Um lembrete apreciável e boas práticas para acompanhar esse tipo de cultura de "métodos adequados", não queremos que o linux se transforme em terra idiota do consumidor. Obrigado pela observação.
emf
Portanto, entendendo corretamente: ter um backup incompleto "realizado as rotações" para o rsnapshot equivale a duas coisas: 1. Esse instantâneo ficará incompleto se for consultado em um ponto posterior 2. Quaisquer instantâneos de nível superior ainda estarão completos , mas não fará referência adequada aos arquivos vinculáveis ​​anteriores que foram perdidos no instantâneo incompleto. Isso está correto?
emf
1

Isso aconteceu comigo. minha unidade externa ficou completa no meio do backup incremental do rsnapshot:

rsync: write failed on "<path>": No space left on device (28) 

Agora, gostaria de compartilhar algumas coisas que aprendi com isso. ou seja, reparar e limitar consideravelmente as chances de um caso como esse me morder de volta;)

Retomar o backup interrompido de um Rsnapshot

Conheço duas maneiras de reverter isso com segurança.

Manualmente

  1. Exclua o último diretório (por exemplo, daily.0)
  2. Renomeie diretórios consecutivos (daily.1 -> daily.0, ...); roteiro possível 1
  3. Execute o backup como de costume (novamente).

Automaticamente

O rsnapshot não possui recursos de pausa / parada e retomada (exceto os limitados " ignorados devido ao plano de reversão " 2 ), portanto, precisamos usar um wrapper para lidar com esses recursos.

rsnapshot-once3 por Philipp C. Heckel é um wrapper para rsnapshot em PHP que:

  • funciona sem modificar o conf do seu rsnapshot
  • garantir que tarefas diárias, semanais e mensais sejam executadas apenas uma vez no respectivo período, via cron (bom para laptops)
  • reversão do backup com falha (verifica se o último backup foi concluído; caso contrário, o último diretório foi excluído e os diretórios consecutivos foram renomeados, por exemplo, daily1. -> daily.0, ...)

Utilizando-o por um ano, sou um usuário feliz: editei o php.ini openbase_dirpara minha necessidade de backup e pronto, dia de sorte ^ _ ^ Mais suave e seguro do que minha solução anterior baseada em rsnapshot.

Nota: slm me ligou aqui a partir de uma pergunta duplicada: destino Rsnapshot cheio - como executar novamente com segurança?

tuk0z
fonte