Hier dann mal die Antworten auf meine Fragen, beantwortet vom Maintainer. Falls sie jemand auch noch braucht, poste ich sie mal hier:
***
1. Was macht sync_first, wenn es aktiviert ist?
2. Wie arbeitet rsnapshot, wenn diese Option nicht aktiviert ist?
sync_first ist defaultmäßig ausgeschaltet (sync_first 0).
Grundsatz: Lieber hast du ein altes Backup, aber dafür ein Vollständiges, als andersrum.
Wir spielen das jetzt mal im Default durch:
Ok, dein rsnapshot-backup hat mehrere Versionsstände auf der ersten Ebene:
alpha.0
alpha.1
alpha.2
alpha.3
Jetzt beginnt dein Backup. rsnapshot rotiert zuerst:
alpha.0 → 1
alpha.1 → 2
alpha.2 → 3
alpha.3 → wird gelöscht
Danach beginnt rsnapshot die Daten von der Quelle zu holen:
alpha.0 → aktuell leer, wird das neue Backup reingeschrieben
alpha.1 → volles Backup, ehem. Version 0
alpha.2 → volles Backup, ehem. Version 1
alpha.3 → volles Backup, ehem. Version 2
Hier kommt jetzt auch das Problem: Das ehemalige alpha.3 ist weggeschmissen worden und alpha.0 ist noch leer. Wenn jetzt dein Backup aus irgendwelchen Gründen abbricht, hast du dich verpokert und deine snapshots sind in einem dir nicht bekannten, aber inkonsistenten Zustand.
Wir spielen das jetzt mal durch mit sync_first 1:
Ok, dein rsnapshot-backup hat mehrere Versionsstände auf der ersten Ebene:
alpha.0
alpha.1
alpha.2
alpha.3
Jetzt beginnt dein Backup. rsnapshot rotiert NICHT. rsnapshot synct als erstes:
tmp_backup.XXXX → neuer Ordner mit der Backupquelle wird erstellt
alpha.0
alpha.1
alpha.2
alpha.3
Wenn jetzt das sync fertig ist, erst dann und nur dann wird rotiert:
tmp_backup.XXXX → alpha.0
alpha.0 → 1
alpha.1 → 2
alpha.2 → 3
alpha.3 → wird gelöscht
Dadurch hast du zwar während dem Backup 5 anstatt 4 verschiedene Versionsstände, jedoch sind alle immer konsistent.
***
LG // neph