Shutdown-Skript für Backup-NAS

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.148
Punkte für Reaktionen
736
Punkte
154
Da einige Backup-Tasks DSM nicht daran hindern herunterzufahren (Backup Rotation & Integrity Check) hab ich mir ein Skript gebaut, welches diese Vorgänge in den Logs auswertet und die Backup-Syno erst herunterfährt, wenn diese abgeschlossen wurden.

Außerdem werden Remote-Replikationen auf meine Backup-Syno durchgeführt, die ebenfalls berücksichtigt werden.

Das Skript braucht Konfigurations-Dateien, um auf unterschiedliche Situationen zu reagieren. Zum Verständnis nehmen wir folgende Konfigurationen für Backup, Integrity Checks & Replikationen an:
Code:
BackupA (ID 1), täglich 10:00
BackupB (ID 2), täglich 10:02
BackupC (ID 3), täglich 10:04

Remote-Replikation ShareA, täglich 10:06 und 18:06
Remote-Replikation ShareB, täglich 10:08 und 18:08
Remote-Replikation ShareC, täglich 10:10 und 18:10

Integrity Check BackupA, Samstags 18:12
Integrity Check BackupB, Samstags 18:16
Integrity Check BackupC, Sonntags 18:12

Für die Backups müsst ihr die IDs aus den Logs der Backup-Syno suchen, da dort die Task-Namen nicht auftauchen.

Für die obengenannte Beispiel-Konfiguration ergeben sich folgende Konfigs für das Skript:

Für morgens jeden Tag:
morning.conf
Code:
{
  "BACKUPIDS": [
    "1",
    "2",
    "3"
  ],
  "INTEGRITYIDS": [
  ],
  "REPLICATIONS": [
    "ShareA",
    "ShareB",
    "ShareC"
  ],
  "REPTIME": "10",
  "MAILTARGET": "mail@mail.de",
  "SENDER": "MeinNAS@mail.de",
  "AFTERSECS": "900"
}

Für abends in der Woche:
evening_week.conf
Code:
{
  "BACKUPIDS": [
  ],
  "INTEGRITYIDS": [
  ],
  "REPLICATIONS": [
    "ShareA",
    "ShareB",
    "ShareC"
  ],
  "REPTIME": "18",
  "MAILTARGET": "mail@mail.de",
  "SENDER": "MeinNAS@mail.de",
  "AFTERSECS": "900"
}

Für abends Samstags:
evening_saturday.conf
Code:
{
  "BACKUPIDS": [
  ],
  "INTEGRITYIDS": [
    "1",
    "2"
  ],
  "REPLICATIONS": [
    "ShareA",
    "ShareB",
    "ShareC"
  ],
  "REPTIME": "18",
  "MAILTARGET": "mail@mail.de",
  "SENDER": "MeinNAS@mail.de",
  "AFTERSECS": "900"
}

Und für abends Sonntags:
evening_sunday.conf
Code:
{
  "BACKUPIDS": [
  ],
  "INTEGRITYIDS": [
    "3"
  ],
  "REPLICATIONS": [
    "ShareA",
    "ShareB",
    "ShareC"
  ],
  "REPTIME": "18",
  "MAILTARGET": "mail@mail.de",
  "SENDER": "MeinNAS@mail.de",
  "AFTERSECS": "900"
}

Durch den Wert "AFTERSECS" wird festgelegt, in welchen Abständen ihr informiert werdet, wenn etwas länger dauern sollte, in diesem Beispiel alle 15m.

Die Beispiele spiegeln meine Konfiguration abgespeckt wieder:

Morgens jeden Tag 9:55 startet meine Prod-Syno die Backup-Syno per WOL, die Backups und Replikationen werden durchgeführt und um 10:12 wird auf der Backup-Syno das Skript gestartet: /Pfad zum Skript/shutdown_nas.sh /Pfad zur Konfig/morning.conf

Abends in der Woche 18:01 wird sie wieder gestartet, die Replikationen werden durchgeführt, 18:12 wird das Skript gestartet: /Pfad zum Skript/shutdown_nas.sh /Pfad zur Konfig/evening_week.conf

Abends Samstag, Start 18:01, Replikationen und Integrity Checks werden durchgeführt, 18:20 wird das Skript gestartet: /Pfad zum Skript/shutdown_nas.sh /Pfad zur Konfig/evening_saturday.conf

Abends Sonntag, Start 18:01, Replikationen und Integrity Checks werden durchgeführt, 18:20 wird das Skript gestartet: /Pfad zum Skript/shutdown_nas.sh /Pfad zur Konfig/evening_sunday.conf

Für die Integrity Checks müsst ihr schauen, wie lange die etwa brauchen, um die beste Startzeit für das Skript festzulegen.

Ich hoffe, ich hab das einigermassen verständlich gemacht. Bei Fragen fragen und wer Verbesserungsvorschläge hat, immer raus damit.

P.S. Die Zeile mit dem Shutdown-Befehl ist zur Sicherheit auskommentiert, dann kann man erst mal testen...
 

Anhänge

  • shutdown_nas.zip
    1,8 KB · Aufrufe: 7
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Sauber, danke für's Aufbereiten und Teilen!
 
  • Like
Reaktionen: Adama

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.148
Punkte für Reaktionen
736
Punkte
154
Ich hab mir die Beta für Hyper Backup und Hpyer Backup Vault installiert und bin dabei drauf gestossen, dass Synology den Pfad für die synobackup.log bzw. synobackup_server.log geändert hat.

Dementsprechend hab ich mein Skript angepasst. Das Skript checkt die Version von Hyper Backup Vault und setzt die Variable für die Log-Datei entsprechend.

Weiterhin berücksichtigt das Skript jetzt eine eventuelle Logrotation.

Edit sagt: Häng doch auch mal das neue Skript an. Ok, erledigt...
 
Zuletzt bearbeitet:

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.148
Punkte für Reaktionen
736
Punkte
154
Ich hab mein Shutdown-Skript etwas überarbeitet:
Da "source" ja auch die Möglichkeit bietet, unerwünschten Code einzuschleusen, habe ich die Konfig-Dateien auf JSON-Format umgestellt.
Außerdem hab ich ein paar kleine Fehler korrigiert.

Die Anleitung ist ensprechend angepasst...
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat