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] – [Funktion testen] 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:
  
-==== rsnapshot separat prüfen ====+<code bash> 
 +usr/bin/rsnapshot daily>> "$LOGFILE" 2>&1
  
-Falls das Skript Fehler liefert, zuerst ''rsnapshot'' selbst testen: 
  
-Konfiguration prüfen:+</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 bash>\\ 
-sudo /usr/bin/rsnapshot configtest\\ 
-echo $?\\ 
  
 </code> </code>
  
-Tagessicherung direkt starten:+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 bash>\\ 
-sudo /usr/bin/rsnapshot daily\\ 
-echo $?\\ 
  
 </code> </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$?\
 +
 +----
 +
  
 ==== Mailversand testen ==== ==== Mailversand testen ====
Zeile 176: 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 184: 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 202: Zeile 409:
  
 ---- ----
 +
  
 ==== Typische Fehlerquellen ==== ==== Typische Fehlerquellen ====
ubuntu/backup.1775983502.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