web-dev-qa-db-fra.com

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 créer un instantané complet de votre système en rotation, et que rdiff-backup effectue une sauvegarde différentielle, qui sera basée sur les fichiers précédemment sauvegardés.

So: Que se passe-t-il si ça s'interrompt au milieu?

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

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

20
emf

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 la sauvegarde soit le même que si la tentative de sauvegarde interrompue n'avait jamais été démarrée.

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

  • Si vous utilisez sync_first et que rsnapshot sync est interrompu, vous pouvez simplement exécuter à nouveau rsnapshot sync pour redresser la situation. Si vous exécutez accidentellement rsnapshot <backup level> à ce stade, le dernier point de sauvegarde restera incomplet et sera exécuté selon des rotations.
  • Si vous n'utilisez pas sync_first, vous vous retrouvez avec un point de sauvegarde incomplet, hybride de l'ancienne et de la nouvelle version des fichiers. À moins que vous ne procédiez à une rotation inverse inversée manuelle de chaque point de sauvegarde, le point de sauvegarde incomplet sera traité par rotation.
  • Dans les deux cas, l'exécution de rsnapshot <backup level> entraînera la perte du point de sauvegarde le plus ancien, à moins que use_lazy_deletes ne soit activé.

Notez que sync_first et use_lazy_deletes se traduisent par une utilisation plus importante de l’espace disque.


Un rappel/déni de responsabilité: Cela devrait aller de soi, mais ne faites jamais confiance aveuglément aux conseils des autres sur Internet. Si vous envisagez d’utiliser rdiff-backup ou rsnapshot pour quelque chose stratégique , lisez chaque mot du manuel et testez, testez, testez tout vous-même!

22
ændrük

Cela m'est juste arrivé. mon lecteur externe est devenu complet à mi-parcours de la sauvegarde incrémentielle de rsnapshot:

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

Maintenant, j'aimerais partager quelques points que j'ai appris de cela. c'est-à-dire réparer et limiter considérablement les chances pour un tel cas de me mordre en arrière;)

Reprendre la sauvegarde interrompue d'un Rsnapshot

Je connais deux façons de réduire cela en toute sécurité.

Manuellement

  1. Supprimer 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 ne dispose pas de fonctions de pause/arrêt et de reprise (sauf pour le nombre limité " ignoré en raison du plan de restauration " 2 ), donc nous devons utiliser un wrapper pour gérer ces fonctionnalités.

rsnapshot-once par Philipp C. Heckel est un wrapper pour rsnapshot dans 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 correspondante, via cron (Nice pour les ordinateurs portables)
  • annulation d'une sauvegarde ayant échoué (vérifie si la dernière sauvegarde est terminée; sinon, le dernier répertoire est supprimé et les répertoires consécutifs sont renommés, par exemple, daily1. -> daily. 0, ...)

Je l'utilise avec plaisir depuis un an: j'ai édité le openbase_dir de php.ini pour mon besoin en sauvegarde et le tour est joué, jour de chance ^ _ ^ Plus lisse et plus sûr que ma précédente solution brute basée sur rsnapshot.

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

1
tuk0z