Hallo zusammen,
da das reoback nicht so gearbeitet hatte wie ich es mir gewünscht hätte habe ich mir nun ein eigenes Bash-Skript geschrieben zur Sicherung von Daten. Allerdings treten da bei mir ein paar Verständnisprobleme auf.
Damit lese ich aus einem hist-File das Datum der letzten Vollsicherung und berechne die Tage
Damit wird dann das eigentliche Archive angelegt
So, nun ist mein Problem das -mtime, das sich ja laut Doku nicht auf reine Tage, sondern auf Stunden bezieht, also n*24
Zwei Fragen dazu:
Angenommen der tar-Befehl startet um 03:00:00 und braucht 5 Minuten. Dann werden ja eigentlich bei -mtime -1 die letzten 24 Stunden genommen. Doch was ist mit dem der eigentlichen Laufzeit? Welchen Wert hat denn dieses "mtime" während dieser 5 Minuten Laufzeit? Immer 03:00:00 - 24h oder am Ende 03:05:00 - 24h. Wenn dem so wäre, dann würden in der Sicherung ja 5 Minuten fehlen.
Selbiges auch, wenn das Script manuell gestartet wird und nicht per Cron, dann dann kann die Startzeit ja auch unterschiedliche sein. Ist der letzte Durchlauf länger als 24 Stunden her, dann fehlen wieder Daten.
Kann man nicht irgendwie sagen "Alle Dateien die seit Datum x geändert oder erzeugt wurde"? Dieses "innerhalb der letzten 24 Stunden" finde ich zu ungenau.
Ok, dieses -newer habe ich schon entdeckt, aber dort das Datum und somit die Sicherung auf eine Datei zu beziehen, deren Wert per touch festgelegt ist finde ich auch sehr unsicher.
Ich hätte da also schon gerne eine Lösung, die das letzte Datum aus einer Datei ließt und dann alle Dateien ab diesem Datum berücksichtigt.
Gibt es so etwas überhaupt? Wie löst Ihr so etwas? Oder habe ich einen kompletten Denkfehler? In PHP könnte ich das lösen, aber eigentlich wollte ich das Script nicht in PHP schreiben.
Danke euch schon mal.
Nachtrag:
Wäre das eventuell eine Möglichkeit? Kann es leider nicht abschätzen
Oder das Datum inkl. Zeit aus dem Hist-File auslesen und dann bei eine temporären Datei per touch das Datum setzen und diese dann als Referenz für -newer verwenden?
Allerdings finde ich auch immer Lösungen mit -newermt "2010-01-13 00:00", doch das scheint es bei mir gar nicht zu geben.
da das reoback nicht so gearbeitet hatte wie ich es mir gewünscht hätte habe ich mir nun ein eigenes Bash-Skript geschrieben zur Sicherung von Daten. Allerdings treten da bei mir ein paar Verständnisprobleme auf.
Damit lese ich aus einem hist-File das Datum der letzten Vollsicherung und berechne die Tage
Code:
LAST_FULL=$(( ($(date "+%s") - $(date -d $(tail -n 1 hist_full) +"%s") ) / 86400));
Damit wird dann das eigentliche Archive angelegt
Code:
tar -czf $1 $(find $2 -type f -mtime -$LAST_FULL);
So, nun ist mein Problem das -mtime, das sich ja laut Doku nicht auf reine Tage, sondern auf Stunden bezieht, also n*24
Zwei Fragen dazu:
Angenommen der tar-Befehl startet um 03:00:00 und braucht 5 Minuten. Dann werden ja eigentlich bei -mtime -1 die letzten 24 Stunden genommen. Doch was ist mit dem der eigentlichen Laufzeit? Welchen Wert hat denn dieses "mtime" während dieser 5 Minuten Laufzeit? Immer 03:00:00 - 24h oder am Ende 03:05:00 - 24h. Wenn dem so wäre, dann würden in der Sicherung ja 5 Minuten fehlen.
Selbiges auch, wenn das Script manuell gestartet wird und nicht per Cron, dann dann kann die Startzeit ja auch unterschiedliche sein. Ist der letzte Durchlauf länger als 24 Stunden her, dann fehlen wieder Daten.
Kann man nicht irgendwie sagen "Alle Dateien die seit Datum x geändert oder erzeugt wurde"? Dieses "innerhalb der letzten 24 Stunden" finde ich zu ungenau.
Ok, dieses -newer habe ich schon entdeckt, aber dort das Datum und somit die Sicherung auf eine Datei zu beziehen, deren Wert per touch festgelegt ist finde ich auch sehr unsicher.
Ich hätte da also schon gerne eine Lösung, die das letzte Datum aus einer Datei ließt und dann alle Dateien ab diesem Datum berücksichtigt.
Gibt es so etwas überhaupt? Wie löst Ihr so etwas? Oder habe ich einen kompletten Denkfehler? In PHP könnte ich das lösen, aber eigentlich wollte ich das Script nicht in PHP schreiben.
Danke euch schon mal.
Nachtrag:
Wäre das eventuell eine Möglichkeit? Kann es leider nicht abschätzen
-daystart
misst die Zeiten für die -amin, -atime, -cmin, -ctime, -mmin und -mtime Eigenschaften vom Beginn des aktuellen Tages anstelle der letzten 24 Stunden.
Diese Option betrifft nur die Tests, die weiter hinten in der Kommandozeile geschrieben sind.
Oder das Datum inkl. Zeit aus dem Hist-File auslesen und dann bei eine temporären Datei per touch das Datum setzen und diese dann als Referenz für -newer verwenden?
Allerdings finde ich auch immer Lösungen mit -newermt "2010-01-13 00:00", doch das scheint es bei mir gar nicht zu geben.
Last edited by a moderator: