Cosa succede se rsnapshot / rdiff-backup viene interrotto nel mezzo di un trasferimento?


20

La domanda dice tutto:

Cosa succede se rsnapshot o rdiff-backup vengono interrotti nel mezzo di un trasferimento?

So che rsnapshot tenta di creare un'istantanea completa del sistema in modo rotante e rdiff-backup esegue un backup differenziale, che si baserà sui file precedentemente salvati dietro di esso.

Quindi: cosa succede se viene interrotto nel mezzo?

Ciò si traduce in una "istantanea incompleta"?

Altre istantanee che dipendono da questa verranno danneggiate? (Sicuramente no, ma ...?)


1
Non sarebbe stato molto più chiaro se tu avessi separato questa domanda in due domande separate?
andolo,

2
@andol Se stesse cercando informazioni su come recuperare da un trasferimento interrotto, penso che sarebbe meglio come due domande. Ho interpretato che si tratta più di una richiesta per un confronto di quanti problemi potresti riscontrare se utilizzassi ciascuna utility, come se fosse una variante di "aiutami a decidere quale utilizzare".
ændrük,

Grazie Andol; ma no, penso che questa sia una domanda. Fondamentalmente, "cosa succede se rsnapshot / rsync viene interrotto nel mezzo del trasferimento?", E penso che gli strumenti si estendano su una nicchia specifica, quindi questo IMO non garantisce due domande separate. Ho posto la domanda di "istantanea incompleta" come un potenziale risultato a fini di chiarimento.
emf

Risposte:


22

La mia comprensione è che ...

rdiff-backup rileverà l'incremento incompleto alla successiva esecuzione. Eliminerà l'incremento incompleto in modo che la posizione di backup sia la stessa come se il tentativo di backup interrotto non fosse mai stato avviato.

rsnapshot è un po 'più complicato perché la sua routine è più graduale e varia a seconda dell'uso delle opzioni sync_firste use_lazy_deletes.

  • Se usi sync_firste ti rsnapshot syncinterrompi, puoi semplicemente correre di rsnapshot syncnuovo per raddrizzare le cose. Se invece si esegue accidentalmente rsnapshot <backup level>a questo punto, l'ultimo punto di backup rimarrà incompleto e verrà trasportato tramite rotazioni.
  • Se non lo usi sync_first, sei semplicemente bloccato con un punto di backup incompleto che è un ibrido di versione vecchia e nuova dei file. A meno che non si inverti manualmente la rotazione di ciascun punto di backup, il punto di backup incompleto verrà trasportato attraverso le rotazioni.
  • In entrambi i casi, l'esecuzione rsnapshot <backup level>causa la perdita del punto di backup più vecchio, a meno che non use_lazy_deletessia abilitato.

Si noti che sync_firste use_lazy_deletesvenire a costo di utilizzare più spazio su disco.


Un promemoria / disclaimer: questo dovrebbe essere ovvio, ma mai fidarsi ciecamente dei consigli degli altri su Internet. Se hai intenzione di utilizzare rdiff-backup o rsnapshot per qualcosa di mission-critical , leggi ogni parola del manuale e testa, testa, testa tutto!


1
Un promemoria apprezzabile e una buona pratica per tenere il passo con questo tipo di cultura dei "metodi adeguati", non vogliamo che Linux si trasformi in terra muta-consumatore. Grazie per la nota.
emf

Quindi, comprendendo correttamente: avere un backup incompleto "portato attraverso le rotazioni" per rsnapshot equivarrà a due cose: 1. Quell'istantanea sarà incompleta se rimandata a un punto successivo 2. Eventuali snapshot di livello superiore saranno comunque complete , ma non farà correttamente riferimento ai precedenti file con collegamento reale che erano stati persi nell'istantanea incompleta. È corretto?
emf

1

Mi è appena successo. il mio disco esterno è diventato completamente a metà tramite il backup incrementale di rsnapshot:

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

Ora vorrei condividere un paio di cose che ho imparato da questo. cioè riparare e limitare considerevolmente le possibilità che un caso del genere mi morda;)

Riprendi il backup interrotto di Rsnapshot

Conosco due modi per ripristinarlo in modo sicuro.

manualmente

  1. Elimina l'ultima directory (ad es. Daily.0)
  2. Rinomina le directory consecutive (daily.1 -> daily.0, ...); possibile script 1
  3. Eseguire il backup come al solito (di nuovo).

Automaticamente

rsnapshot non ha funzionalità di pausa / arresto e ripresa (tranne per il limitato " ignorato a causa del piano di rollback " 2 ), quindi dobbiamo usare un wrapper per gestire queste funzionalità.

rsnapshot-once3 di Philipp C. Heckel è un wrapper per rsnapshot in PHP che:

  • funziona senza modificare la configurazione di rsnapshot
  • assicurarsi che le attività quotidiane, settimanali e mensili vengano eseguite una sola volta nel rispettivo periodo di tempo, tramite cron (utile per i laptop)
  • rollback del backup non riuscito (controlla se l'ultimo backup è stato completato; in caso contrario, viene eliminata l'ultima directory e le directory consecutive vengono rinominate, ad esempio daily1. -> daily.0, ...)

Usandolo per un anno sono un utente felice: ho modificato php.ini openbase_dirper le mie esigenze di backup e voilà, giorno fortunato ^ _ ^ Più fluido e sicuro della mia precedente soluzione raw basata su rsnapshot.

Nota: slm mi ha collegato qui da una domanda duplicata: destinazione Rsnapshot piena - come rieseguire in sicurezza?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.