Gut. Für den "nächsten Durchgang" mußt du ja nicht bis Morgen warten, du kannst z.B. im Skript
den Wert für today ja anpassen und laufen lassen. Das Backup für diesen Test-Durchgang kannst du ja
löschen.
(Achtung: auch das lastrun-Statusfile wieder auf das Datum des richtigen Backups anpassen!)
Wenns klappt dürfte die Ursache wohl ein verhunzter rsync-Lauf für 2008-06-05 gewesen sein, wobei
mich das schon überrascht in dieser Weise.
Da kämen wir auch schon zum nächsten Problem, was ich schon mal anklingen ließ, nämlich ein
konzeptioneller Fehler im Skript.
rsync $baseopts $opts
echo $today > $backdir/$host-$srcname/lastrun
Das führen wir in der for-Schleife aus. Dabei schreiben wir immer today in die lastrun, ohne aber
zu prüfen ob der rsync-Lauf für today wirklich OK war. Und beim nächsten Lauf wird als link-dest dann
dieses evtl. fehlerhafte Backup als Hardlink-Quelle genommen. Was unter Umständen zu dem
Fehlerbild führen könnte was du jetzt hattest (Vermutung!).
Besser wäre es also, wir würden den Exot-Code von rsync auswerten, und je nach Wert Maßnahmen
ergreifen: also lastrun nur schreiben lassen wenn das backup ok, oder sogar bei einem fehlerhaften
Backup den Tagesordner komplett löschen, usw.
Ich würde also vorschlagen folgendes zu ändern/ergänzen:
...
rsync $baseopts $opts
case $? in
0)
echo "Backup ok"
echo $today > $backdir/$host-$srcname/lastrun
;;
23|24)
echo "Backup ok, mit Fehlern. Code: "$?
echo $today > $backdir/$host-$srcname/lastrun
;;
*) echo "Backup evtl. FEHLERHAFT! Wird nicht verwendet. Code: "$?
;;
esac
Die Exit-Codes 0,23 und 24 sind meines Erachtens ok und tragbar. Bei allen anderen (siehe auch:
man rsync->EXIT VALUES) würde ich sagen: zu schwerwiegend um dieses Tagesbackup als ok zu
bezeichnen.
Somit wird lastrun (was wir ja als Link-Dest für den nächsten Lauf verwenden) nur geschrieben
bzw. verändert, wenn das letzte Backup ok ist.
Ist natürlich auszutesten, ob diese Änderung funktioniert und bei den Exit-Codes Sinn macht.
Innerhalb des Case-Strukts kann man sich z.B. ja auch per echo diese Fehlermeldung zusätzlich
in eine Datei des backups reinschreiben lassen, usw...
Zum Excluden:
Ich sichere z.B. den
Inhalt von /tmp und /var/tmp nie mit, genau wie /var/run. Die Verzeichnisse
selbst aber schon, nur den Inhalt eben nicht (siehe Exlude-Syntax).
Ansonsten mußt du überlegen was evtl. in deinem $HOME oder sonstwo bei deinen Nutz-Daten
nicht sicherungswürdig ist, aber ggf. viel Platz braucht.
Ich sicher z.B. mein $HOME/video/raw und $HOME/video/temp nicht mit. Ins erste gehen Filme die
ich aufnehme, ins zweite Filme die ich bearbeite, schneide,usw. Das sind große Dateien mit
teils erheblichen Veränderungen, die will ich nicht monatelang im backup rumliegen haben.
Und ohne diese geht die Welt nicht unter.
So würde ich an deiner Stelle meine Nutzdaten halt auch mal durchforsten.