close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#4758 closed Defekt (bleibt so)

Backup-Schema "monthly" überprüfen

Reported by: Rüdiger Kupper Owned by: Rüdiger Kupper
Priority: bei Gelegenheit Milestone: Schuljahr 2022/23
Component: Server: Backups Severity: beeinträchtigt keinen Unterricht
Keywords: Cc: bau

Description

Das Schema "monthly" scheint seit September nicht mehr abgearbeitet zu werden?!

Change History (7)

comment:1 by Rüdiger Kupper, 4 years ago

Priority: hoch → höchste
Status: new → accepted

comment:2 by Rüdiger Kupper, 4 years ago

Cc: bau added
Priority: höchste → gering

Das Backup läuft schon, aber nicht so wie wir es haben wollten.
Ursache ist, wenn ich es recht durchschaue, dass wir überlappende „Aufbewahrungszeiträume“ gewählt haben:

In /etc/rsnapshot.conf steht:

# Wir machen täglich, wöchentlich, monatlich und jährlich Backups
# und halten jeweils XX Kopien vor:
#
# - tägliche Snapshots der letzten zwei Wochen
# - wöchentliche Snapshots der letzten drei Monate
# - monatliche Snapshots der letzten zwei Jahre
# - jährliche Snapshots der letzten fünf Jahre

retain  daily   14
retain  weekly  12
retain  monthly 24
retain  yearly  5

Die Jobs müssen über cron zum richtigen Zeitpunkt ausgeführt werden. Unsere Crontab passt aber nicht exakt zu den oben angegebenen Zeiträumen:

In /etc/cron.d/rsnapshot steht:

# daily snapshot jeden Tag um 22:00 Uhr:
00 22   * * *           root    /usr/bin/rsnapshot daily

# weekly snapshot jeden Sonntag um 21:30 Uhr:
30 21   * * Sun         root    /usr/bin/rsnapshot weekly

# monthly snapshot jeden 1. des Monats um 21:00 Uhr:
00 21   1 * *           root    /usr/bin/rsnapshot monthly

# yearly snapshot jeden 1. August um 20:30 Uhr:
30 20   1 Aug *         root    /usr/bin/rsnapshot yearly

Der Job "weekly" wird also wirklich jede einzelne Woche ausgeführt, "monthly" wirklich jeden Monat.

Was wir nicht beachtet haben ist, wie die "langsamen" rsnapshot-Jobs ablaufen. Der einzige Job, der wirklich den Dateibaum per rsync kopiert ist der primäre – bei uns "daily". Alle anderen Jobs machen nur mv-Befehle.

Der "weekly"-Job läuft jede Woche und macht das hier (aus /var/log/rsnapshot.log):

[2023-02-12T21:30:02] /bin/rm -rf /backups/weekly.11/
[2023-02-12T21:39:32] mv /backups/weekly.10/ /backups/weekly.11/
[2023-02-12T21:39:32] mv /backups/weekly.9/ /backups/weekly.10/
[2023-02-12T21:39:33] mv /backups/weekly.8/ /backups/weekly.9/
[2023-02-12T21:39:33] mv /backups/weekly.7/ /backups/weekly.8/
[2023-02-12T21:39:33] mv /backups/weekly.6/ /backups/weekly.7/
[2023-02-12T21:39:33] mv /backups/weekly.5/ /backups/weekly.6/
[2023-02-12T21:39:33] mv /backups/weekly.4/ /backups/weekly.5/
[2023-02-12T21:39:33] mv /backups/weekly.3/ /backups/weekly.4/
[2023-02-12T21:39:33] mv /backups/weekly.2/ /backups/weekly.3/
[2023-02-12T21:39:33] mv /backups/weekly.1/ /backups/weekly.2/
[2023-02-12T21:39:33] mv /backups/weekly.0/ /backups/weekly.1/
[2023-02-12T21:39:33] mv /backups/daily.13/ /backups/weekly.0/

Entscheidend ist der letzte mv: Hier wird die älteste daily-Version zur neusten weekly-Version „umgewidmet“.
Genauso „klaut" sich der "monthly"-Job jeden Monat den letzten "weekly"-Snapshot, das ist bei uns weekly.11, also 12 Wochen alt. Es ist daher klar, dass der neuste monthly-Eintrag immer 12 Wochen zurück liegt, drei Monate. Und genau das sagt auch das Dateisystem:

Heute ist der 13.2.2023:

drwxr-xr-x 8 root root 4096 Okt 31 02:26 /backups/monthly.0

Suchen wir nach den Backups von November bis Januar, so müssen wir bei den "weekly"-Backups schauen:

drwxr-xr-x 8 root root 4096 Jan 30 02:42 /backups/weekly.0
drwxr-xr-x 8 root root 4096 Jan 23 02:43 /backups/weekly.1
drwxr-xr-x 8 root root 4096 Jan 16 02:46 /backups/weekly.2
drwxr-xr-x 8 root root 4096 Jan  9 02:45 /backups/weekly.3
drwxr-xr-x 8 root root 4096 Jan  1 22:21 /backups/weekly.4
drwxr-xr-x 8 root root 4096 Dez 26 02:37 /backups/weekly.5
drwxr-xr-x 8 root root 4096 Dez 19 02:41 /backups/weekly.6
drwxr-xr-x 8 root root 4096 Dez 12 02:35 /backups/weekly.7
drwxr-xr-x 8 root root 4096 Dez  5 02:37 /backups/weekly.8
drwxr-xr-x 8 root root 4096 Nov 28 02:31 /backups/weekly.9
drwxr-xr-x 8 root root 4096 Nov 21 02:25 /backups/weekly.10
drwxr-xr-x 8 root root 4096 Nov 14 02:25 /backups/weekly.11

Es sind also alle Backups da, nur nicht unbedingt dort, wo man sie bei unserer Namensgebung erwartet.

comment:3 by Rüdiger Kupper, 4 years ago

Klarer machen könnten wir das, indem wir die Crontab-Termine mit den Aufbewahrungszeiträumen in Übereinstimmung bringen. Da wir "daily" 14 Tage lang aufbewahren reicht es auch, wenn "weekly" jede zweite Woche läuft. Und "monthly" braucht nur alle drei Monate zu laufen, weil "weekly" 12 Wochen lang aufbewahrt wird.

Die Namen sollten wir dann vielleicht auch anpassen, Vorschlag:

daily, fortnightly, quarterly, biennial

Bisschen unhandlich von den Worten, würde aber inhaltlich passen.

Version 0, edited 4 years ago by Rüdiger Kupper (next)

comment:4 by Rüdiger Kupper, 4 years ago

In der Vorlage für die rsnapshot.conf steht daher auch einfach nur "alpha, beta, gamma, delta" – jetzt verstehe ich auch warum ;-).

comment:5 by Rüdiger Kupper, 4 years ago

Jetzt verbiegt sich grade mein Gehirn etwas, wie die Aufbewahrungszeiten sein müssen, damit sich nichts mehr überlappt. Muss das dann so aussehen?!

retain  daily   14   # tägliches Backup der letzten 14 Tage
retain  biweekly 6   # 6 Backups alle zwei Wochen, also bis 12 Wochen in die Vergangenheit (3 Monate)
retain  quarterly 8  # 8 Backups jedes Vierteljahr, also bis 24 Monate in die Vergangenheit (2 Jahre)
retain  biennial  2  # 2 Backups alle zwei Jahre, also bis 4 Jahre in die Vergangenheit

Das müsste dem entsprechen, was wir uns ursprünglich vorgestellt hatten. Nur bei den Jahresbackups hatten wir bis 5 Jahre in die Vergangenheit vorgesehen, da ergibt aber nur 4 Jahre oder eben 6 Jahre Sinn.

comment:6 by Rüdiger Kupper, 4 years ago

Resolution: → bleibt so
Status: accepted → closed

Ah, nein, jetzt hab ich mich selbst reingelegt: Wir wollen nach den 14 Tagen ja *wirklich* jede Woche einen Snapshot haben. Nicht nur alle zwei Wochen. Unsere Einstellungen machen also genau das, was wir wollten.

Es geht auch kein Snapshot verloren oder ist doppelt (die werden ja nur durch mv verschoben). Das einzige, was mich verwirrt hat, ist die Folge der Überlappung:

  • wir haben wöchentliche Snapshots in weekly, doch der neuste davon ist immer mind. 14 Tage alt.
  • Wir haben monatliche Snapshots in monthly, doch der neuste ist immer mind. drei Monate + 2 Wochen alt.
  • Und der neuste yearly-Snapshot ist immer mind. 2 Jahre + 3 Monate + 2 Wochen alt.

Sucht man die jeweils jüngeren muss man nur im „übergeordneten“ Backupschema suchen.

Mann, das hat ja jetzt gedauert, bis ichs durchschaut hatte! Es darf also alles bleiben wie es ist, ich schreibe einfach ein README damut ichs nicht wieder vergesse.

comment:7 by bau, 4 years ago

gute Arbeit - guter Plan!
Wenn wir eine Dokumentation dafür haben, dann lässt sich das auch in Zukunft leichter verstehen.

Note: See TracTickets for help on using tickets.