Backup Skript - linuxu3er

linux
u3er
Direkt zum Seiteninhalt
Backup Skript
Das Basisskript / Shell-Skript kommt aus dem Ubuntu Wiki und ermöglicht es per rsync und Hardlinks ein Backup über SSH zu erstellen der in einem Tagesordner abgelegt wird. Das Skript erstellt also einen Ordner z.B. 11 für den 11.ten des Monats und legt dort die Daten vom MediaPC ab, die zu sichern sind. Wenn man das Skript jeden Tag ausführt hat man einen Ordner für jeden Tag, am Ende des Monats wird der erste Tag wieder überschrieben. Jeder Tag erhält ein vollständiegs Backup über Hardlinks, die Datei ist also nur einmal auf der Festplatte vorhanden und solange sich nichts ändert wird ein Link auf die Datei erstellt. Man erhält also ein Inkrementelles Backup, das die Änderungen seit der letzten Sicherung sichert.

Mit dieser einfachen Möglichkeit fange ich mal an, den "Jedes Backup ist besser als kein Backup".

Nachdem das Shell-Skript läuft habe ich die Funktionalität in ein Python-Skript umgesetzt. Anstatt dem Tag wird das komplette Datum mit Jahr und Monat als Ordnername verwendet. Man kann Vorgeben, wieviele Backups aufgehoben werden, gepaart mit mit dem Rhythmus des Aufweckens kann man sich so das Rotationsintervall wählen. Zum Beispiel wöchentlicher Start des NAS mit Ausführung des Backups und halten von 12 Backups, dann kann man 12 Wochen alte Daten wiederherstellen. Außerdem habe ich die Ordnerstruktur etwas abgeflacht und es wird nicht der komplette Pfad übernommen sondern nur ab dem zu sichernden Ordner.

Bevor das eigentliche Backup mit rsync über SSH ausgeführt wird, wird überprüft, ob der Quellrechner angeschaltet / über SSH erreichbar ist. Sofern dies nicht der Fall ist wird der Rechner per WakeOnLan gestartet und gewartet eine SSH Verbindung aufgebaut werden kann.

Das Skript soll automatisch beim Start des NAS ausgeführt werden, dazu nutze ich die rc.local. Dies hat den Vorteil, dass das Skript nur einmal ausgeführt wird und man einfach durch starten des NAS ein Backup ausführen kann. Es muss folgender Befehl vor "exit 0" eingefügt werden.
sudo nano /etc/rc.local
/bin/sleep 15 && sudo -u icke /usr/bin/python3 /home/icke/Scripts/backup_python.py &
Es ist wichtig das Skript als normaler Nutzer auszuführen (sudo -u icke), da ansonsten die Backup Ordner nur mit root-Rechten beschrieben werden können oder sich SSH nicht verbindet, weil die passwortlose Anmeldung nur für den Nutzer icke eingerichtet ist.

Das Skript ist weit davon entfernt perfekt zu sein, aber für das Erste erfüllt es seinen Zweck und sichert die Daten vom MediaPC. Das Skript kann hier runtergeladen werden.

Vorhandene Einschränkungen
  • Das Skript kann keine Unterordner als Quelle nutzen, weil rsync sich sonst beschwert, dass die Ordner im Ziel nicht vorhanden sind
  • Die Einstellungen sind alle verteilt und die Programmierung ist Quick&Dirty

Verbesserungen
  • ab und an bitweise Kontrolle der Originaldateien mit rsync -c
  • mit --exclude bestimmte Dateien / Dateitypen ausschließen
Zurück zum Seiteninhalt