Weitere Installation
Dieser Text ist Bestandteil des Software-Projektes 'Backup Data'
Version 23.01.1
Copyright (C) 2020 Richard Albrecht , www.rleofield.de
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should hEinstellungenave received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
Anwendungsfälle und Tests
Ort der Skripte des Backup
- ist in in /etc/rlf_backup_data.rc abgelegt
- man kann in .bashrc einen alias ablegen, der auf den Ort der Skripte zeigt
- 'cdb'
- in .bashrc: "alias cdb='cd /usr/local/bin/backup_data'"
- nach dem Start steht der Ort auch im File cfg.working_folder
- Tipp:
- /usr/local/bin/backup_data ist ein sicherer Platz im Filesystem, der nicht vom Systemupdate überschrieben wird.
Namensgebung der Projekte
- es können beliebig viele Backupfestplatten verwendet werden
- diese müssen vorbereitet werden
- es können pro Festplatte beliebig viele Projekte angelegt werden
- Einschränkung ist der Platz auf der jeweiligen Festplatte
- jede Festplatte bekommt einen eindeutigen Label, ein Wort, ohne Leerzeichen, ohne Unterstrich
- z.B. 'adisk'
- jedes Backup auf jeder Festplatte bekommt einen eindeutigen Namen, ein Wort, ohne Leerzeichen, ohne Unterstrich
- z.B. 'videos'
- auf verschiedenen Festplatten können gleiche Namen verwendet werden
- daraus wird ein Gesamtname gebildet, der eine Verbindung des Labels mit dem Namen durch '_' ist
- z.B. 'adisk_videos'
- mit diesem eindeutigen Projektnamen werden Namen in den Konfigurationen gekennzeichnet
- jedes so gebildete Projekt hat eigene Regeln, eigene Zeiten, eigene Logfiles
- siehe z.B. 'cfg.projects'
- eine Änderung der Namen ist später nur schwer möglich, weil diese an vielen Stellen verwendet werden
- daher Namen wählen, die neutral sind und sich nicht auf Dinge beziehen, die sich öfter ändern
- z.B. adisk_videos, bdisk_videos, adisk_buero, adisk_archiv ...
- Namen, die bestimmte Eigenschaften, die sich ändern können, darstellen, z.B. Hersteller der Festplatten, sind nicht geeignet
Ablauf des Backup
Was kann in das Backup?
-
Daten von beliebigen PCs, lokal oder remote, via 'rsnapshot' kopieren
- welche Daten kopiert werden , wird in den Files in './conf' festgelegt
- ein Remote-PC muss via 'ssh' und SSH-Keys erreichbar sein (ohne PW)
- Windows-PCs müssen Daten via CIFS/SAMBA (Windows-Freigabe) exportieren
- der Server kann via SAMBA die Freigaben einbinden und ein Backup anfertigen
- SAMBA kann via ssh auch getunnelt werden,
-
der Server greift mit 'root' auf die PCs zu
- 'ssh' muss daher restriktiv eingestellt werden
- siehe 'ssh' in den Vorträgen [[https://rleofield.de/vortraege.html]]
-
die Backupfestplatten sind immer lokal am Backup-Server
- intern an SATA oder an USB
- nach dem erfolgreichem Backup (siehe Meldung im Verzeichnis 'backup_messages_test') können die USB-Platten ohne ein 'umount' abgezogen werden und jederzeit wieder angesteckt werden
- umount kann konfiguriert werden
- das Backup macht dort weiter, wo es aufgehört hat
- man kann damit auf mehreren Festplatten, leicht zeitversetzt, aber sonst identische, Backups anlegen
- mit LUKS verschlüsselte USB-Festplatten werden unterstützt
- dafür muss ein LUKS-Key-File hinterlegt werden
Rsnapshot, wie arbeitet das?
- siehe die Konfigurationsfiles für rsnapshot im Verzeichnis ./conf/
- rsnapshot verwendet rsync
- Anlegen einer Kopie der Daten
- Anlage von Verzeichnissen im Backup, die sich nach 'retain' richten
- je nach 'retain' wird eine Historie der Backups angelegt
- ist der erste 'retain'-Level erreicht, wird das älteste Backup auf Level 2 verschoben.
- usw. bis der letzte Level erreicht ist ( es sind z.Zt. genau 4 Level möglich )
- danach werden die ältesten Daten im letzten Level gelöscht
- in jedem Level in jedem Backup sind alle Files enthalten, die zum Zeitpunkt des Backups erreichbar waren
- hat sich ein File nicht geändert, wird dieser als Hardlink in die nächsten Stufen übernommen.
- d.h. ein nicht geänderter File existiert in jedem Level, ist aber nur einmal auf der Backup-HD vorhanden
- 'rsnapshot' verwendet Konfigurationsfiles, die im Verzeichnis './conf/' liegen
- jedes Projekt hat eine eigene Konfiguration
- diese Files haben eine genaue Syntax, die 'rsnapshot' festlegt
- https://rsnapshot.org/rsnapshot/docs/docbook/rest.html#configuration
- es dürfen in den Konfigfiles keine Leerzeichen verwendet werden, nur Tabulatoren sind möglich
Start/Stop
- start
- manual
- automatisch beim Boot
- es wird intern eine Sperre verwaltet, die einen mehrfachen Aufruf von './start_backup.sh' verhindert
- ./cron_start_backup.sh löscht diese Sperre, falls vorhanden
- das ist sicher, weil beim Boot des Servers noch kein Backup läuft
- das Backup läuft im Hintergrund
- ein Terminal kann nach dem Start geschlossen werden
- stop
- ./stop.sh
- stoppt nach einigen Sekunden das Backup
- die Sperre wird entfernt
- läuft ein 'rsync', wird das Ende abgewartet und danach das Backup gestoppt
- letzte Zeilen des Hauptlogfiles anzeigen
- Zustand abfragen
- ./is_stopped.sh
- aus der Antwort kann der Zustand, stopped, waiting, stop with error, abgelesen werden
Fehler werden auch in der Datei 'internalerrors.txt' gesammelt.
Der Inhalt wird am Ende des Backup für jede Backup-HD angezeigt und am Ende des Backup noch einmal.
Sind in 'internalerrors.txt' gesammelte Fehler gelöst, muss das Backup mit ./stop.sh' gestoppt werden und mit ./'start_backup.sh' wieder gestartet werden.
Anschauen der Logfiles
- allgemeines Log via ./tt.sh
- es werden mit 'tail -f cc_log.log' die letzten 1000 Zeilen des Logs angezeigt
- File: rr_label_projekt...
- File: aa_label_projekt...
- Commands für rsync, von rsnapshot automatisch erzeugt
- alle Logfiles werden täglich einmal nach 'oldlogs' verschoben
- bei relativ kurzen Logfiles erfolgt das Verschieben nur an einem 1. des Monats
Tests
weitere Informationen
- mit ./show_config.sh werden alle Konfigurationen für alle Backups angezeigt
- mit ./show_times.sh werden die Zeilen bis zum nächsten Backup für jedes Projekt angezeigt
verwendete Linux-Werkzeuge
- 'bash' https://wiki.ubuntuusers.de/Bash/
- 'rsnapshot' https://wiki.ubuntuusers.de/rsnapshot/
- für die Einrichtung und Kontrolle des Backup braucht man
- für Updates der Backupskripte wird 'diff' verwendet
-
ist die Backup-HD verschlüsselt, wird zusätzlich natürlich 'LUKS' benötigt
-
es werden ausschließlich Standard-Werkzeuge verwendet
- alles ist transparent, einsehbar und anpassbar