Wenn jemand dazu Anregungen, Änderungen oder sonstiges hat, werde ich diesen ersten Post entsprechend anpassen, damit hier immer eine aktuelle Anleitung/Erklärung vorhanden ist.
Diese Anleitung bezieht sich in meinem Fall auf die Sicherung auf einer NAS, da man generell keine Sicherungen auf dem Laufwerk ablegen sollte von welchem gesichert wird!
Denn ist dieses Laufwerk defekt hat man natürlich auch nichts mehr von der Sicherung.
Es kann jedoch auch eine externe Festplatte verwendet werden. Dazu muss im folgenden entweder das Ziel "/Backup" durch das entsprechende lokale Laufwerk getauscht werden, oder der Ordner "/Backup" muss auf das externe Laufwerk verweisen.
Vorbereitungen:
- Anlegen des User pi mit entsprechendem Kennwort auf der NAS
- Anlegen eines Backup-Ordners auf der NAS mit Berechtigung für den User pi
- Anlegen des Backupordners auf dem Raspberry:
Code: Alles auswählen
sudo mkdir /backup sudo chmod 777 /backup
- Da ich eine Verbindung über NFS-Share mit der NAS herstelle müssen noch folgende Tätigkeiten erledigt werden:
Code: Alles auswählen
sudo apt-get install nfs-common -y
Code: Alles auswählen
sudo systemctl start rpcbind
Code: Alles auswählen
sudo systemctl enable rpcbind
- Anpassen von /etc/fstab zum Mounten eines NFS-Shares auf der NAS (ich habe dafür WinSCP verwendet; Login mit root):
An ende eine Leerzeile lassen
Code: Alles auswählen
NAS-IP:/Pfad_zum_Backup-Ordner /backup nfs rw 0 0
Hiermit wird der Ordner auf der NAS am Raspberry als Ordner "/Backup" eingebunden.
- Anpassen von /etc/crontab für mount nach boot:
Code: Alles auswählen
@reboot root sleep 20 && umount -a @reboot root sleep 40 && mount -a
(Wöchentliche) Komplettsicherung des Raspberry: kann natürlich auch nur einmal im Monat oder so erfolgen.- Installation von raspiBackup
Code: Alles auswählen
sudo curl -sLO https://www.linux-tips-and-tricks.de/raspiBackupInstallUI.sh && sudo bash ./raspiBackupInstallUI.sh
- Konfiguration nach eigenen Vorstellungen z.B. in der aktuellen raspiBackup.sh Version 0.6.6 und raspiBackupInstallUI.sh Version 0.4.3.5:
- M3 -> C2 (Verzeichnispfad für die Backups) = /backup <- Hier wird der Speicherort des zu erstellenden Backups angegeben. Also der zuvor angegebene/erstellte Pfad.
- C3 (Backupversionen) = "Eine maximale Anzahl von Backups vorhalten -> 2
- C4 (Backup Typ) = „Sichere mit dd und stelle unter Windows wieder her“ <- Somit kann das Backup mit Win32DiskImager wieder auf eine SD-Karte gespielt werden.
Folgende Möglichkeiten habt ihr generell mit C10 zusammen:Vollbackup Backupzeit Backupgröße Datenkompression CPU belastet Karte belastet Selektiver Restore möglich Dateisystem dd ja lang gross nein mittel hoch nein alle, fat32 nur bis 4GB ddz ja lang kleiner ja ja hoch nein alle, fat32 nur bis 4GB tar ja mittel mittel nein nein mittel ja alle, fat32 nur bis 4GB tgz ja mittel mittel ja ja mittel ja alle, fat32 nur bis 4GB rsync ja kurz mit Hardlinks
mittel ohne Hardlinksklein mit Hardlinks
mittel ohne Hardlinksnein nein nein kaum ext3/ext4
- C6 (Zu stoppende und startende Services) = grafana-server + influxdb
- Grafana-server
- influxdb
- C9 (regelmäßiges Backup) = nach Wunsch
- R1 -> R2 -> Sonntag
- R3 = 01:00
- C10 (Komprimierung) = „Komprimiere den dd Backup“ <- Spart einiges an Speicherplatz
Stündliches Datenbank-Backup und Sicherung von ein paar Dateien: kann ebenfalls nach eigenen Wünschen gestalltet werden- Anpassen von /etc/crontab für Datenbank-Backup:
Erklärung:
Code: Alles auswählen
# Backup von Datenbanken 30 * * * * pi influxd backup -portable -database solaranzeige /backup/Datenbanken/solaranzeige
"influxd backup" -> Erstellt das Datenbank-Backup
"-portable" -> erstellt das Backup in *.tar.gz Dateien, wodurch die Dateien gepackt/verkleinert werden
"-database solaranzeige" gibt die zu sichernde Datenbank an "/backup/Datenbanken/solaranzeige" -> gibt den Speicherort der Sicherung an. Also hier dann in dem oben verbundenem Laufwerk im Unterordner "Datenbanken" und dann im weiteren Unterordner "solaranzeige" um bei mehreren Datenbanken unterscheiden zu können.
Hier bei Bedarf noch weitere Datenbanken in eigene Unterordner (/backup/Datenbanken/XXX) sichern (Abstand der Sicherungen ca. 2-5 Minuten).
Code: Alles auswählen
# Backup von Dateien 50 1 * * 6 pi cp /var/www/html/*user.config.php /backup/Dateien/ 51 1 * * 6 pi cp /var/www/html/meldungen_senden.php /backup/Dateien/ 52 1 * * 6 pi cp /var/www/html/befehle.ini.php /backup/Dateien/ 53 1 * * 6 root cp -r /var/lib/grafana/plugins/* /backup/Dateien/grafana/
Auch bei der crontab muss an Ende eine Leerzeile vorhanden sein!
Zu guter Letzt werden jetzt noch, über ein extra Script, Datenbank-Backups gelöscht, welche älter als 2 Tage sind:- Ordner für eigene Scripte anlegen:
Code: Alles auswählen
mkdir /home/pi/script
- darin eine Datei anlegen "autodelete.sh". Diese ist das Script zum löschen der Dateien:
Code: Alles auswählen
mcedit autodelete.sh
- folgenden Inhalt eintragen:
Code: Alles auswählen
#!/bin/bash find /backup/Datenbanken/solaranzeige/* -mtime +2 -exec rm {} \;
"find /backup/Datenbanken/solaranzeige/*" -> Durchsuche den Ordner "/backup/Datenbanken/solaranzeige"
"-mtime +2" -> beachtet alle Dateien, welche älter als 2 Tage sind (2 kann auch durch eine andere gewünschte Zahl von Tagen getauscht werden.)
"-exec rm {} \" -> hiermit werden die vorher gefundenen Dateien (alter als 2 Tage) gelöscht
- Datei ausführbar machen:
Code: Alles auswählen
sudo chmod +x autodelete.sh
- crontab erneut anpassen:
Code: Alles auswählen
@daily /bin/bash/ /home/pi/script/autodelete.sh
Wieder an die Leerzeile am Ende der crontab denken!
Wie gesagt ist dies nur eine mögliche Variante um den Raspberry und die Datenbank(en) zu sichern. Anregungen/Wünsche/Änderungsvorschläge werden bei Bedarf gerne in diesem Post aufgenommen um eine Anleitung für alle verständlich vorzuhalten.
Gruß
Timo - Da ich eine Verbindung über NFS-Share mit der NAS herstelle müssen noch folgende Tätigkeiten erledigt werden: