Ich schreibe einen Befehl, um cron
automatische Backups für meinen Flashdrive zu erstellen.
Ich verwende, tar ... -N <some date>
um das Backup zu erstellen.
Das Problem ist, wie ich den Befehl schreibe, der mir das richtige Datum liefert.
Fürwöchentliches BackupIch habe darüber nachgedacht:
date -d '1 week ago' +%Y%m%d
date -d 'monday week ago' +%Y%m%d
Aber es wird kompliziert, wenn mein Laptop zur von Cron geplanten Zeit (Montag danach) ausgeschaltet wird. Nehmen wir an, Anacron übernimmt den Job am Dienstag. Bei der ersten Variante verpasse ich alle Änderungen vom vorherigen Montag. Bei der zweiten Variante verpasse ich die ganze vorherige Woche.
date -d 'monday 1 week ago' +%Y%m%d
ist dasselbe wie date -d 'monday week ago' +%Y%m%d
date -d 'monday 2 week ago' +%Y%m%d
im Fall, wenn Anacron ein Backup erstellt, aber es hat eine Woche mehr (im Normalfall) von Cron.
Irgendeine Idee, wie ich die Sicherungszeit Anacron-kompatibel machen kann?
Antwort1
Hier ist eine Idee: Jedes Mal, wenn ein Backup ausgeführt wird, zeichnet das Backup-Skript das aktuelle Datum auf, indem es touch
eine Datei angibt. Wenn das Backup das nächste Mal ausgeführt wird, verwendet es die Datumsstempeldatei des vorherigen Backups als Argument für tar -N
. In einem Shell-Skript könnte die Logik beispielsweise folgendermaßen aussehen:
# Begin the latest backup run now.
touch /backups/new-backup-time
tar -N /backups/prev-backup-time -c ... ...
# Save the latest backup time for the next run.
mv /backups/new-backup-time /backups/prev-backup-time
Dies hängt von der Tatsache ab, dass die tar -N
Option entweder ein Datum oder der Pfadname einer Datei sein kann, deren Datenänderungszeit das Datum angibt.