21 votes

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

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 de manière rotative, et que rdiff-backup fait une sauvegarde différentielle, qui va être basée sur les fichiers précédemment sauvegardés derrière elle.

Alors : Que se passe-t-il si elle est interrompue au milieu ?

Cela donne-t-il lieu à un "instantané incomplet" ?

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

1 votes

Cela n'aurait-il pas été plus clair si vous aviez séparé cette question en deux questions distinctes ?

2 votes

S'il cherchait des informations sur la manière de récupérer un transfert interrompu, je pense qu'il serait préférable de poser deux questions. Je pense qu'il s'agit plutôt d'une demande de comparaison des problèmes que vous auriez si vous utilisiez chaque utilitaire, comme si c'était une variante de "aidez-moi à décider lequel utiliser".

0 votes

Merci Andol ; mais non, je pense que cela tient en une seule question. En gros, "que se passe-t-il si rsnapshot/rsync est interrompu au milieu du transfert ?", et je pense que les outils couvrent une niche spécifique, donc cela ne justifie pas deux questions distinctes. J'ai posé la question du "snapshot incomplet" comme un résultat potentiel à des fins de clarification.

23voto

Kyle Gibbons Points 133

Je crois savoir 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 la 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 de la fonction sync_first y use_lazy_deletes options.

  • Si vous utilisez sync_first y rsnapshot sync est interrompu, vous pouvez simplement exécuter rsnapshot sync encore une fois pour arranger les choses. Si vous exécutez accidentellement rsnapshot <backup level> à ce stade, le dernier point de sauvegarde restera incomplet et sera reporté lors 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. À moins que vous n'inversiez manuellement la rotation de chaque point de sauvegarde, le point de sauvegarde incomplet sera porté par les rotations.
  • Dans les deux cas, l'exécution de rsnapshot <backup level> entraînera la perte du point de sauvegarde le plus ancien, sauf si use_lazy_deletes est activé.

Notez que sync_first y use_lazy_deletes mais au prix de l'utilisation de plus d'espace disque.


Rappel/exclusion de responsabilité : cela va sans dire, mais ne vous fiez jamais aveuglément aux conseils des autres sur Internet. Si vous prévoyez d'utiliser rdiff-backup ou rsnapshot pour quelque chose mission-critical , lire chaque mot du manuel et test, test, test tout vous-même !

1 votes

Un rappel appréciable, et une bonne pratique pour rester dans ce genre de culture des "bonnes méthodes", nous ne voulons pas que linux se transforme en un pays de consommateurs débiles. Merci pour cette note.

0 votes

Donc, si je comprends bien : avoir une sauvegarde incomplète "portée par les rotations" pour rsnapshot reviendra à deux choses : 1. Cet instantané sera incomplet si on y fait référence ultérieurement. 2. Tout instantané de niveau supérieur sera être encore complet mais ne pourra pas renvoyer correctement aux fichiers antérieurs à lien fixe qui ont été oubliés dans l'instantané incomplet. Est-ce correct ?

2voto

tuk0z Points 256

Cela vient de m'arriver. Mon disque externe est devenu plein à mi-chemin de la sauvegarde incrémentale de rsnapshot :

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

J'aimerais maintenant partager avec vous les leçons que j'ai tirées de cette expérience, c'est-à-dire réparer et limiter considérablement les risques qu'un tel cas se reproduise ;)

Reprendre la sauvegarde interrompue d'un Rsnapshot

Je connais deux façons de faire marche arrière en toute sécurité.

Manuellement

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

Automatiquement

rsnapshot n'a aucune capacité de pause/arrêt et de reprise (à l'exception de la fonction limitée " ignoré en raison du plan de retour en arrière " 2 ), nous devons donc utiliser un wrapper pour gérer ces fonctionnalités.

rsnapshot-once 3 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 sont exécutées uniquement une fois dans la période respective, via cron (agréable pour les ordinateurs portables)
  • rollback d'une sauvegarde échouée (vérifie si la dernière sauvegarde a été complète ; si ce n'est pas le cas, le dernier répertoire est supprimé et les répertoires consécutifs sont renommés, par exemple daily1. -> daily.0, ...)

Je l'utilise depuis un an et je suis un utilisateur heureux : J'ai édité les php.ini's openbase_dir pour mon besoin de sauvegarde et voilà, jour de chance ^_^ Plus facile et plus sûr que ma solution précédente basée sur rsnapshot brut.

Note : slm m'a relié ici à partir d'une question dupliquée : Rsnapshot destination full - comment réexécuter en toute sécurité ?

0 votes

Merci pour vos idées sur la façon de relancer le processus de sauvegarde, mais pouvez-vous nous dire comment vous avez libéré suffisamment d'espace pour reprendre sans rencontrer la même erreur ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X