Wie richte ich das Datum für die wöchentliche Cron-Sicherung ein?

Wie richte ich das Datum für die wöchentliche Cron-Sicherung ein?

Ich schreibe einen Befehl, um cronautomatische 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%dist dasselbe wie date -d 'monday week ago' +%Y%m%d
date -d 'monday 2 week ago' +%Y%m%dim 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 toucheine 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 -NOption entweder ein Datum oder der Pfadname einer Datei sein kann, deren Datenänderungszeit das Datum angibt.

verwandte Informationen