Projekte - Backup-Skript

Auf der Suche nach einer einfachen Backup-Lösung für meinen VDR und Debian-Server bin ich irgendwann auch das Backup-Skript von 321tux.de gestoßen. Nach dem mit Hilfe des Betreibers ein kleineres Problem mit dem Skript gelöst wurde, habe ich begonnen einige Erweiterungen einzubauen.

Folgende Änderungen habe ich eingebaut:

Das von mir modifizierte Skript kann hier geladen werden: MV_Backup.zip Version vom 25.09.2016
Aktuelle Version kann man per GIT beziehen: https://github.com/MegaV0lt/MV_Backup
Fragen und Anregungen kann man im DEB kund tun. Anregungen werden auch gerne aufgenommen, falls sie mir als sinnvoll erscheinen.

Das Backup-Skript bietet darüber hinaus noch ein paar weitere nützliche Funktionen:

Abhängig von den Optionen von rsync sind zudem folgende Dinge möglich und standardmäßig eingestellt:

 

Beispiel für einen fstab-Eintrag einer USB-Platte, die nicht automatisch eingehängt wird:

# USB-Disk (BACKUP_USB)
LABEL=BACKUP_USB  /mnt/BACKUP_USB  auto  defaults,noatime,noauto  0 0

Beispiel bei Aufruf mit -h:

Hilfe-Bildschirm 


Beispiel eines eMail-Statusberichtes:

Status-Bericht

Konfiguration

Da die Konfiguration nicht furchtbar kompliziert ist, sollte sie auch ohne größere Erfahrung mit Skripten zu bewältigen sein. Zudem helfen die Kommentare (#) im Skript bei der Einrichtung.

In der Variablen $RSYNC_OPT werden die Optionen gespeichert, mit denen rsync vom Skript aufgerufen wird (siehe auch man rsync). $MOUNT enthält optional den Mountpoint einer externen Festplatte, um überprüfen zu können, ob diese korrekt angeschlossen und eingebunden wurde. $BAK_DIR gibt einen Ordner für gelöschte und veränderte Dateien an, wobei dabei die Variable $TARGET (Zielverzeichnis) verwendet werden kann.

Die Einstellungen der einzelnen Profile werden in sogenannten Arrays gespeichert (n ist dabei durch eine Zahl zu ersetzen):

 title[n]=""
   arg[n]=""
source[n]=""
target[n]=""
   log[n]="${target[n]}/${title[n]}_log.txt"
exfrom[n]="$(mktemp -t "tmp.rsync.XXXX")"
cat > "${exfrom[n]}" <<EOF
 
EOF

Im Array title[n] wird eine Bezeichnung und in arg[n] ein Argument (i.d.R. bestehend aus einem Buchstaben), mit dem das Profil aufgerufen wird, gespeichert. Beide Angaben werden in der Hilfe  und bei der Ausführung des Skriptes angezeigt.
In source[n] stehen die Quellverzeichnisse, wobei (nur) in diesem Fall Pfadangaben, welche ein Leerzeichen enthalten, von \” umschlossen werden müssen. Das Zielverzeichnis wird mit target[n] festgelegt.
Zwischen <<EOF und EOF kann man Dateien und Verzeichnisse angeben, welche nicht gesichert werden sollen. Hierbei ist pro Zeile lediglich 1 Pfadangabe erlaubt, wobei  Leerzeichen diesmal nicht besonders behandelt werden dürfen.

Der Pfade zur Logdatei in log[n] und zur temporäre Datei in exfrom[n] müssen nicht zwingend geändert werden.