Que se passe-t-il si rsnapshot / rdiff-backup est interrompu au milieu d'un transfert?

20

La question dit tout:

Que se passe-t-il si rsnapshot ou rdiff-backup est interrompu au milieu d'un transfert?

Je sais que rsnapshot essaie de faire un instantané complet de votre système en rotation, et rdiff-backup fait une sauvegarde différentielle, qui va être basée sur les fichiers précédemment enregistrés derrière.

Alors: que se passe-t-il s'il est interrompu au milieu?

Cela aboutit-il à un "instantané incomplet"?

Les autres instantanés qui dépendent de celui-ci seront-ils corrompus? (Sûrement pas, mais ...?)

emf
la source
1
N'aurait-il pas été beaucoup plus clair si vous aviez séparé cette question en deux questions distinctes?
andol
2
@andol S'il cherchait des informations sur la façon de se remettre d'un transfert interrompu, je pense que ce serait mieux que deux questions. J'ai interprété qu'il s'agit plus d'une demande de comparaison de la quantité de problèmes que vous auriez si vous utilisiez chaque utilitaire, cependant, comme s'il s'agissait d'une variante de "aidez-moi à décider lequel utiliser."
ændrük
Merci Andol; mais non, je pense que cela représente une question. Fondamentalement, "que se passe-t-il si rsnapshot / rsync est interrompu au milieu du transfert?", Et je pense que les outils couvrent un créneau spécifique, donc cela n'implique pas que l'OMI justifie deux questions distinctes. J'ai posé la question de «l'instantané incomplet» comme un résultat potentiel à des fins de clarification.
emf

Réponses:

22

Ma compréhension est que ...

rdiff-backup détectera l'incrément incomplet lors de sa prochaine exécution. Il supprimera l'incrément incomplet afin que l'emplacement de sauvegarde soit le même que si la tentative de sauvegarde interrompue n'avait jamais été lancée.

rsnapshot est un peu plus compliqué car sa routine est plus progressive et varie en fonction de l'utilisation des options sync_firstet use_lazy_deletes.

  • Si vous utilisez sync_firstet rsnapshot syncest interrompu, vous pouvez simplement exécuter à rsnapshot syncnouveau pour redresser les choses. Si vous exécutez accidentellement rsnapshot <backup level>à ce point à la place, le dernier point de sauvegarde restera incomplet et sera effectué par des rotations.
  • Si vous n'utilisez pas sync_first, vous êtes simplement coincé avec un point de sauvegarde incomplet qui est un hybride de l'ancienne et de la nouvelle version des fichiers. Sauf si vous faites pivoter manuellement en sens inverse chaque point de sauvegarde, le point de sauvegarde incomplet sera effectué par rotation.
  • Dans les deux cas, l'exécution rsnapshot <backup level>entraînera la perte du point de sauvegarde le plus ancien, sauf s'il use_lazy_deletesest activé.

Notez cela sync_firstet use_lazy_deletesvenez au prix de l'utilisation de plus d'espace disque.


Un rappel / avis de non-responsabilité: cela devrait aller de soi, mais ne faites jamais confiance aveuglément aux conseils des autres sur Internet. Si vous prévoyez d'utiliser rdiff-backup ou rsnapshot pour quelque chose de critique pour la mission , lisez chaque mot du manuel et testez, testez, testez tout vous-même!

ændrük
la source
1
Un rappel appréciable et une bonne pratique pour suivre ce type de culture des «méthodes appropriées», nous ne voulons pas que Linux se transforme en terre de consommation muette. Merci pour la note.
emf
Donc, comprendre correctement: avoir une sauvegarde incomplète "effectuée à travers les rotations" pour rsnapshot équivaudra à deux choses: 1. Cet instantané sera incomplet s'il est renvoyé à un point ultérieur 2. Tout instantané de niveau supérieur sera toujours complet , mais ne fera pas correctement référence aux précédents fichiers pouvant être liés en dur qui étaient manquants dans l'instantané incomplet. Est-ce correct?
fem
1

Cela m'est juste arrivé. mon disque externe est devenu plein à mi-chemin de la sauvegarde incrémentielle de rsnapshot:

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

Maintenant, j'aimerais partager quelques choses que j'ai apprises de cela. c'est-à-dire pour réparer et limiter considérablement les chances qu'un tel cas me morde en retour;)

Reprendre la sauvegarde interrompue d'un Rsnapshot

Je connais deux façons de faire reculer cela en toute sécurité.

Manuellement

  1. Supprimez le dernier répertoire (par exemple daily.0)
  2. Renommer des répertoires consécutifs (daily.1 -> daily.0, ...); script possible 1
  3. Exécutez la sauvegarde comme d'habitude (à nouveau).

Automatiquement

rsnapshot n'a pas de capacités de pause / arrêt et de reprise (à l'exception du limité " sauté en raison du plan de restauration " 2 ), nous devons donc utiliser un wrapper pour gérer ces fonctionnalités.

rsnapshot-once3 par Philipp C. Heckel est un wrapper pour rsnapshot en PHP qui:

  • fonctionne sans modifier la conf de votre rsnapshot
  • s'assurer que les tâches quotidiennes, hebdomadaires et mensuelles ne sont exécutées qu'une seule fois dans la période respective, via cron (idéal pour les ordinateurs portables)
  • restauration de la sauvegarde qui a échoué (vérifie si la dernière sauvegarde a été terminée; sinon le dernier répertoire est supprimé et les répertoires consécutifs sont renommés par exemple daily1. -> daily.0, ...)

En l'utilisant depuis un an, je suis un utilisateur heureux: j'ai édité les php.ini openbase_dirpour mes besoins de sauvegarde et le tour est joué, jour de chance ^ _ ^ Plus fluide et plus sûr que ma précédente solution basée sur rsnapshot.

Remarque: slm m'a lié ici à partir d'une question en double: destination Rsnapshot pleine - comment réexécuter en toute sécurité?

tuk0z
la source