Benutzer-Werkzeuge

Webseiten-Werkzeuge


wetter:regelmaessige_backups

Regelmäßige Backups der Wettersoftware weewx und der Wetterdaten

Grundsätzliches

Jede Datenbank und jede Art von Daten (sofern für jemanden von Wichtigkeit) sollten regelmäßig gesichert werden, um einen Datenverlust bei einem System- oder Speichermedien-Crash oder auch ungewolltem Löschen vorzubeugen. Darum beschreibe ich hier, wie man den Raspberry Pi so konfigurieren kann, dass er automatisch jeden Tag ein Backup unserer weewx Installation mit allen Konfigurations- und Datendateien erstellt. Dieses Backup wird in meiner Anwendung automatisch auf einem Netzwerkserver (NAS) 1) gespeichert.

Benötigte Ausrüstung

  • Unser im Netzwerk vorhandener und konfigurierter Raspberry Pi 2
  • ein Rechner, von dem aus wir mittels SSH 2) auf die Textkonsole des Raspberry zugreifen
  • Putty (Programm für SSH-Verbindungen unter Windows)

Hinweis: grundsätzlich kann man die hier beschriebene Konfiguration auch direkt (ohne SSH Verbindung) auf dem Raspberry Pi durchführen. Wir nutzen hier die SSH Verbindung, da dies die Dokumentation in diesem Wiki vereinfacht und wir an den kleinen Raspberry nicht extra Maus, Tastatur und Monitor anschließen müssen.

  • tar (Benutzung des tar Kommandozeilen Programms)
  • chmod (Benutzung des chmod Kommandozeilen Programms, Dateirechte ändern)
  • Datensicherung (Generelle Informationen zur Datensicherung)
  • cron-Dienst (Beschreibung des CRON Dienstes auf Linux Installationen)
  • Dateirechte (Information zum Linux Dateirechte System)

Grundsätzliches Vorgehen

Um eine Datei oder wie hier einen ganzen Ordner zu sichern, gehen wir in 4 Schritten vor
1. die komplette zu sichernde Struktur in einem Archiv packen
2. das Archiv an einem entsprechend sicheren Ort speichern
3. die beiden Vorgänge 1. und 2. durch ein Script ausführen lassen
4. das Script automatisieren, dass es automatisch einmal pro Tag ausgeführt wird

1. bis 3. erschlagen wir mit einem Backup Script und 4. mittels des bereits aus der Zeitsynchronisierung bekannten cron Dienstes.

Backup Script erstellen

Um ein Backup Script zu erstellen, wechseln wir zunächst in den Ordner /etc

cd /etc

Anschließend öffnen wir den Editor nano und geben direkt den Dateinamen backup.sh unseres neuen Scripts mit

nano backup.sh

Nun wird das Backup-Script im Editor wie folgt erstellt:

#!/bin/bash
 
## Dieses Script sichert die komplette Wetterstations-Software
## mit allen Einstellungen und Daten.
## 2017-02-23, MSchnack
 
 
# Aktuelles Datum in Variable speichern
DATE=$(date +%Y-%m-%d-%H%M%S)
 
# Pfad zum Backup-Verzeichnis
# Pfad sollte nicht mit "/" enden!
# Man muß schreibberechtigt im entsprechenden Verzeichnis sein.
BACKUP_DIR="/home/pi"
 
# Verzeichnisse auflisten, die gesichert werden sollen.
# Bei Verzeichnissen, für die der User keine durchgehenden Leserechte hat (z.B. /etc) sind Fehler vorprogrammiert.
# Pfade sollte nicht mit "/" enden!
SOURCE="/home/weewx "
 
 
# Pfad(e) packen und als Backup ablegen
# Komprimieren mit tar und gzip
tar -czpf $BACKUP_DIR/$DATE-Wetterstation.tar.gz $SOURCE

Damit das Script ausführbar ist, müssen wir noch das passende Bit in den Datei-Rechten setzen

chmod u+x backup.sh

Nun können wir mit dem Befehl

./backup.sh

testen, ob unser Script funktioniert. Am im Script angegebenen Speicherort sollte jetzt eine Archivdatei liegen. Diese sollte man zur Sicherheit auch einmal entpacken und schauen, ob die korrekten Inhalte gesichert wurden. ACHTUNG! dabei nicht versehentlich die Original-Dateien auf dem System überschreiben!

Backup Script über CRON regelmäßig ausführen lassen

Damit unser Backup Script regelmäßig einmal am Tag ausgeführt wird, muss noch ein crontab-Eintrag vorgenommen werden, damit der cron Dienst das Script ausführt. Dazu zunächst die Datei /etc/crontab mit dem Editor nano öffnen:

nano /etc/crontab

Es wird eine neue Zeilen hinzugefügt. 7 18 am Beginn der Zeile gibt dem cron Dienst die Anweisung in der 7. Minute der 18. Stunde den Eintrag auszuführen, also um 18:07 Uhr, die weiteren * bedeuten dann zusammen „täglich“. Die Ausführung soll als Benutzer root erfolgen und es soll die Datei /etc/backup.sh ausgeführt werden. Der Zusatz > /dev/null 2>&1 leitet alle Ausgaben der Kommandozeile ins Nirwana um.

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
@reboot         root    ntpdate -s 0.de.pool.ntp.org
3 */5   * * *   root    ntpdate -s 0.de.pool.ntp.org
7 18    * * *   root    /etc/backup.sh > /dev/null 2>&1
#

Mit der Tastenkombination Strg + O speichern wir die Änderung ab und mit Strg + X verlassen wir den Editor nano.

1)
Network Attached Storage - ein Server zur zentralen Datenspeicherung
2)
Secure Shell - Netzwerkprotokoll zur verschlüsselten Verbindung auf einen anderen Rechner über das Netzwerk
wetter/regelmaessige_backups.txt · Zuletzt geändert: 2017/02/23 12:17 von schnacki