ubuntuusers.de

Seltsame Zeitstempel

Status: Ungelöst | Ubuntu-Version: Ubuntu 24.10 (Oracular Oriole)
Antworten |

MasterQ

Avatar von MasterQ

Anmeldungsdatum:
12. März 2023

Beiträge: 197

Moin,

vorweg, ich habe mal wieder keinen Schimmer, ob das das richtige Unterforum ist.

Ich starte jeden Tag um 01:30 einen cronjob

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20

# ... diverse Vorbereitungen

   if [ ${ERROR} -eq 0 ]
   then

      # täglich
      . ${BINPATH}backup.nas.sh daily

      # Montag, wöchentlich
      if [ $(date +%u) -eq 1 ]
      then
         . ${BINPATH}backup.nas.sh weekly 
      fi

      # Monatsanfang, monatlich
      if [ $(date +%d) -eq 1 ]
      then
         . ${BINPATH}backup.nas.sh monthly 
      fi

Die Zeitstempel der vom Backup angelegten Ordner müssten somit sein für z.B. den Vorgang "wöchentlich"

...

  • 20.01.2025

  • 27.01.2025

  • 03.02.2025

  • 10.02.2025

und "monatlich"

...

  • 01.11.2024

  • 01.12.2024

  • 01.01.2025

Und was sehe ich

alle Zeitstempel für wöchentlich stehen auf dem Tag später, also dem folgenden Dienstag. Die Zeitstempel für monatlich liegen alle vor dem jeweiligen 1.

In den Logdateien des Backups stimmen die Zeitangaben.

[2025-02-03T01:31:57] ====================================================
[2025-02-03T01:31:57] Backup Kernanwendung gestartet
[2025-02-03T01:31:57] Starte Backup für NAS mit Interval weekly
[2025-02-03T01:31:57] /mnt/backup ist bereits gemounted
[2025-02-03T01:31:57] /usr/bin/rsnapshot -c /mnt/extend/admin_global/backup/conf/rsnapshot.nas.conf weekly: started
[2025-02-03T01:31:57] echo 400444 > /var/run/rsnapshot.pid
[2025-02-03T01:31:57] mv /mnt/backup/backup/nas/weekly.2/ /mnt/backup/backup/nas/weekly.3/
[2025-02-03T01:31:57] mv /mnt/backup/backup/nas/weekly.1/ /mnt/backup/backup/nas/weekly.2/
[2025-02-03T01:31:57] mv /mnt/backup/backup/nas/weekly.0/ /mnt/backup/backup/nas/weekly.1/
[2025-02-03T01:31:57] mv /mnt/backup/backup/nas/daily.6/ /mnt/backup/backup/nas/weekly.0/
[2025-02-03T01:31:57] rm -f /var/run/rsnapshot.pid
[2025-02-03T01:31:57] /usr/bin/rsnapshot -c /mnt/extend/admin_global/backup/conf/rsnapshot.nas.conf weekly: completed successfully
[2025-02-03T01:31:57] Fertig
[2025-02-03T01:31:57] Backup Kernanwendung beendet
[2025-02-03T01:31:57] ====================================================

drwxr-xr-x  3 root root  17  4. Feb 01:31 weekly.0
drwxr-xr-x  3 root root  17 28. Jan 01:31 weekly.1
drwxr-xr-x  3 root root  17 21. Jan 01:31 weekly.2
drwxr-xr-x  3 root root  17 14. Jan 01:31 weekly.3

drwxr-xr-x  3 root root  17 31. Dez 01:31 monthly.0
drwxr-xr-x  3 root root  17 26. Nov 01:31 monthly.1

in den Auflistungen fehlen ein paar Einträge. Daher bin ich darauf aufmerksam geworden, dass beim Backup was Grundlegendes schief geht. Das kann aber eigentlich nichts mit den komischen Zeitstempeln zu tun haben.

Hat irgendjemand eine Idee, warum ein Ordner, der am 03.02.2025 um 01:31 Uhr umbenannt wurde, den Zeitstempel vom 04.02.2025 01:31 Uhr trägt? Am 04.02. lief das tägliche Backup und da werden die "wöchentlichen" Ordner nicht angefasst. Die Abfragen im Script oben sind doch OK, von daher wird der Teil für "wöchentlich" nicht durchlaufen. Es gibt keinerlei Einträge im Log am 04. für einen "wöchentlichen" Durchlauf.

Ich bin etwas ratlos.

Joachim

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13131

MasterQ schrieb:

Hat irgendjemand eine Idee, warum ein Ordner, der am 03.02.2025 um 01:31 Uhr umbenannt wurde, den Zeitstempel vom 04.02.2025 01:31 Uhr trägt?

Umbenennen ändert nicht den Zeitstempel das Objektes sondern des Ordners:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ stat -c '%y %n' .
2025-02-28 19:25:29.036409059 +0100 .
$ touch foo
$ stat -c '%y %n' . foo
2025-02-28 19:25:37.817279563 +0100 .
2025-02-28 19:25:37.817279563 +0100 foo
$ mv -v foo bar
renamed 'foo' -> 'bar'
$ stat -c '%y %n' . bar
2025-02-28 19:25:48.543599895 +0100 .
2025-02-28 19:25:37.817279563 +0100 bar

Oder meinst Du die Dateinamen? Beachte auch, dass unter Cron ggf. eine andere Locale mit anderer Zeitzone herrscht.

Am 04.02. lief das tägliche Backup und da werden die "wöchentlichen" Ordner nicht angefasst. Die Abfragen im Script oben sind doch OK, von daher wird der Teil für "wöchentlich" nicht durchlaufen. Es gibt keinerlei Einträge im Log am 04. für einen "wöchentlichen" Durchlauf.

Das sind zu wenige Informationen. Wir wissen ja nicht, was das Skript sonst noch so treibt.

Ganz generell würde ich aber Systemd-Timer verwenden und nicht im Skript das Scheduling machen. Wenn Du bei Cron bleiben willst, dann würde ich ebenfalls das Scheduling aus dem Skript nehmen und das mit Cron machen.

MasterQ

(Themenstarter)
Avatar von MasterQ

Anmeldungsdatum:
12. März 2023

Beiträge: 197

Hallo,

es gibt keine Hinweise, dass cron in einer anderen Zeitzone läuft. Die Zeitstempel in den Logdateien und dem der Logdatei selbst stimmen überein und entsprechen auch dem erwarteten Wert.

Mein Script macht eigentlich nichts anderes als rsnapshot aufzurufen. Dieses kopiert und benennt Ordner um. Natürlich nutzt es die Bordmittel dazu.

Die Entscheidung, das "Scheduling" im Script zu machen ist bewusst gefallen gewesen. Der wöchentliche Job muss nach dem täglichen Laufen, ansonsten geht es schief. Wenn ich für täglich, wöchentlich und monatlich eigene Jobs starte, dann weiß ich nicht, wie ich sicherstellen kann, dass die Reihenfolge wirklich eingehalten wird und nicht ein Job startet bevor sein Vorgänger fertig ist.

Einen Systemd Timer zu verwenden wäre eine Option. Ich weiß nur nicht, was sich dadurch ändern sollte.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13131

MasterQ schrieb:

Die Entscheidung, das "Scheduling" im Script zu machen ist bewusst gefallen gewesen. Der wöchentliche Job muss nach dem täglichen Laufen, ansonsten geht es schief. Wenn ich für täglich, wöchentlich und monatlich eigene Jobs starte, dann weiß ich nicht, wie ich sicherstellen kann, dass die Reihenfolge wirklich eingehalten wird und nicht ein Job startet bevor sein Vorgänger fertig ist.

Du kannst doch pro Zeile in der Crontab mehrere Jobs ausführen lassen und mit && verknüpfen (Beispiel).

Einen Systemd Timer zu verwenden wäre eine Option. Ich weiß nur nicht, was sich dadurch ändern sollte.

Systemd erlaubt mehr Kontrolle. Man kann darüber z.B. regeln, dass sich zwei Jobs gegenseitig ausschließen. Und es ist der modernere Ansatz, der besser mit dem Rest integriert.

Antworten |