Benutzer-Werkzeuge

Webseiten-Werkzeuge


ubuntu:backup

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ubuntu:backup [2026/04/12 10:45] – [rsnapshot separat prüfen] franzubuntu:backup [2026/04/12 10:52] (aktuell) – [Skript anlegen] franz
Zeile 1: Zeile 1:
 ====== Backup ====== ====== Backup ======
  
-=====   Rsnapshot   =====+===== Rsnapshot =====
  
 ist ein einfach zu bedienendes Backupprogramm. [[https://wiki.ubuntuusers.de/rsnapshot/|Rsnapsho]]t hasiert auf rsync, es ist einfach zu bedienen und eignet sich sehr gut für Backups auf USB Festplatten.\\ ist ein einfach zu bedienendes Backupprogramm. [[https://wiki.ubuntuusers.de/rsnapshot/|Rsnapsho]]t hasiert auf rsync, es ist einfach zu bedienen und eignet sich sehr gut für Backups auf USB Festplatten.\\
Zeile 140: Zeile 140:
 </code> </code>
  
-===== Rsnapshot-Tagessicherung mit Überwachung und Fehlermail =====+===== rsnapshot-Tagessicherung mit Überwachung und Fehlermail =====
  
 +==== Ziel ====
  
 +Die tägliche ''rsnapshot''-Sicherung soll automatisch gestartet und überwacht werden.\\
 +Wenn die Sicherung fehlschlägt oder bereits ein Sicherungslauf aktiv ist, soll automatisch eine E-Mail an ''webmaster@waldhofer.com'' gesendet werden.
  
 +Die Lösung verwendet ein Shell-Skript mit:
  
 +* Start der Tagessicherung\\
 +* Protokollierung in eine Logdatei\\
 +* Fehlererkennung über den Rückgabecode\\
 +* Mailversand im Fehlerfall\\
 +* Sperre gegen Doppelstarts mit ''flock''
  
 +----
  
 +==== Wichtiger Hinweis ====
  
 +Die Tagessicherung ist bereits im Skript integriert.\\
 +Es ist **kein zusätzlicher Cronjob für ''rsnapshot daily'' ** notwendig.
  
 +Das Skript enthält den eigentlichen Sicherungsaufruf:
 +
 +<code bash>
 +usr/bin/rsnapshot daily>> "$LOGFILE" 2>&1
 +
 +
 +</code>
 +
 +Es genügt daher **ein einziger Cronjob**, der nur das Überwachungsskript startet.
 +
 +----
 +
 +
 +==== Warum ''flock'' verwenden? ====
 +
 +Mit ''flock'' wird verhindert, dass ein zweiter Sicherungslauf startet, wenn der erste noch aktiv ist.
 +
 +Vorteile:
 +
 +* keine Doppelstarts\\
 +* saubere Sperrlogik\\
 +* robust unter Ubuntu\\
 +* besser als einfache selbst gebaute PID-/Lockfile-Prüfungen
 +
 +----
 +
 +==== Skript anlegen ====
 +
 +Datei erstellen:
 +
 +<code bash>
 +sudo nano /usr/local/bin/rsnapshot_daily_monitor.sh
 +
 +
 +</code>
 +
 +Inhalt:
 +
 +<code bash>
 +#!/bin/bash
 +
 +set -u
 +
 +LOGFILE="/var/log/rsnapshot_daily.log"\
 +MAILTO="webmaster@domain.at"\
 +HOSTNAME="$(hostname -f 2>/dev/null || hostname)"\
 +LOCKFILE="/var/run/rsnapshot_daily.lock"
 +
 +send_error_mail() {\
 +  local subject="$1"\
 +  local body="$2"
 +
 +  /usr/sbin/sendmail "$MAILTO" <<EOF\
 +Subject: $subject\
 +From: root@$HOSTNAME\
 +To: $MAILTO
 +
 +$body\
 +EOF\
 +}
 +
 +{\
 +  flock -n 9 || {\
 +      DATE_NOW="$(date '+%Y-%m-%d %H:%M:%S')"\
 +      echo "==== $DATE_NOW LOCK AKTIV: rsnapshot daily laeuft bereits ====">> "$LOGFILE"\
 +      send_error_mail \
 +          "[FEHLER] rsnapshot bereits aktiv auf $HOSTNAME" \
 +          "Der rsnapshot-Job wurde nicht gestartet, weil bereits ein Lauf aktiv ist.
 +
 +Host: $HOSTNAME\
 +Zeit: $DATE_NOW\
 +Lockdatei: $LOCKFILE\
 +Logdatei: $LOGFILE"\
 +      exit 1\
 +  }
 +
 +  DATE_NOW="$(date '+%Y-%m-%d %H:%M:%S')"\
 +  echo "==== Start rsnapshot daily: $DATE_NOW ====">> "$LOGFILE"
 +
 +  /usr/bin/rsnapshot daily>> "$LOGFILE" 2>&1\
 +  RETVAL=$?
 +
 +  DATE_END="$(date '+%Y-%m-%d %H:%M:%S')"
 +
 +  if [ $RETVAL -eq 0 ]; then\
 +      echo "==== Ende rsnapshot daily erfolgreich: $DATE_END ====">> "$LOGFILE"\
 +  else\
 +      echo "==== Ende rsnapshot daily FEHLER ($RETVAL): $DATE_END ====">> "$LOGFILE"\
 +      send_error_mail \
 +          "[FEHLER] rsnapshot Backup auf $HOSTNAME" \
 +          "Die rsnapshot-Sicherung ist fehlgeschlagen.
 +
 +Host: $HOSTNAME\
 +Zeit: $DATE_END\
 +Rueckgabecode: $RETVAL\
 +Logdatei: $LOGFILE
 +
 +Die letzten 50 Zeilen aus dem Log:
 +
 +$(tail -n 50 "$LOGFILE")"\
 +  fi
 +
 +  exit $RETVAL\
 +} 9>"$LOCKFILE"\
 +
 +
 +</code>
 +
 +----
 +
 +
 +==== Skript ausführbar machen ====
 +
 +<code bash>
 +sudo chmod +x /usr/local/bin/rsnapshot_daily_monitor.sh
 +
 +
 +</code>
 +
 +----
 +
 +
 +==== Cronjob einrichten ====
 +
 +Root-Crontab bearbeiten:
 +
 +<code bash>
 +sudo crontab -e
 +
 +
 +</code>
 +
 +Eintrag hinzufügen:
 +
 +<code>
 +0 1 * * * /usr/local/bin/rsnapshot_daily_monitor.sh
 +
 +</code>
 +
 +Damit wird jeden Tag um 01:00 Uhr:
 +
 +* das Skript gestartet\\
 +* die Tagessicherung ausgeführt\\
 +* das Ergebnis protokolliert\\
 +* im Fehlerfall eine Mail versendet
 +
 +----
 +
 +
 +==== Wichtige Regel ====
 +
 +Ein alter direkter Cronjob mit ''rsnapshot daily'' darf **nicht zusätzlich** aktiv sein.
 +
 +Also **nicht beides gleichzeitig**:
 +<code>
 +0 1 * * * /usr/bin/rsnapshot daily\
 +0 1 * * * /usr/local/bin/rsnapshot_daily_monitor.sh
 +
 +</code>
 +
 +Richtig ist nur:
 +
 +<code>
 +0 1 * * * /usr/local/bin/rsnapshot_daily_monitor.sh
 +
 +</code>
 +
 +----
 +
 +
 +==== Funktion testen ====
 +
 +Skript manuell starten:
 +
 +<code bash>
 +sudo /usr/local/bin/rsnapshot_daily_monitor.sh
 +echo $?
 +
 +
 +</code>
 +
 +Bedeutung:
 +
 +* ''0'' = Sicherung erfolgreich\\
 +* ''1'' oder anderer Wert ungleich ''0'' = Fehler erkannt
 +
 +Logdatei ansehen:
 +
 +<code bash>
 +sudo tail -n 50 /var/log/rsnapshot_daily.log
 +
 +
 +</code>
 +
 +----
 +
 +
 +==== rsnapshot separat prüfen ====
 +
 +Falls das Skript Fehler liefert, zuerst ''rsnapshot'' selbst testen:
 +
 +Konfiguration prüfen:
 +
 +<code bash>
 +sudo /usr/bin/rsnapshot configtest
 +echo $?
 +
 +
 +</code>
 +
 +Tagessicherung direkt starten: sudo/usr/bin/rsnapshot daily\ echo$?\
 +
 +----
  
  
Zeile 155: Zeile 381:
 Testmail senden: Testmail senden:
  
-<code bash>\\ +<code bash> 
-echo -e "Subject: Testmail\n\nDas ist ein Test." | sudo /usr/sbin/sendmail webmaster@waldhofer.com\\+echo -e "Subject: Testmail\n\nDas ist ein Test." | sudo /usr/sbin/sendmail webmaster@domain.at 
  
 </code> </code>
Zeile 163: Zeile 390:
  
 ---- ----
 +
  
 ==== Logdatei ==== ==== Logdatei ====
  
 Die Logdatei ist: Die Logdatei ist:
 +
 <code> <code>
-\\ +/var/log/rsnapshot_daily.log
-/var/log/rsnapshot_daily.log\\+
  
 </code> </code>
Zeile 181: Zeile 409:
  
 ---- ----
 +
  
 ==== Typische Fehlerquellen ==== ==== Typische Fehlerquellen ====
ubuntu/backup.1775983513.txt.gz · Zuletzt geändert: von franz

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki