Backup-Shellskript für macOS und Linux

Im dritten Artikel zur Erstellung eines Backups mit rsync geht es um die Nutzung eines Shellskripts. Denn dadurch vermeidet man, die rsync-Anweisung jedes Mal per Hand in das Terminal eingeben zu müssen.

In meinem Dokumente-Verzeichnis befindet sich ein Ordner “Skripte”, in dem zahlreiche Shellskripte gespeichert sind. Diese sollen auf einem USB-Stick gespeichert werden, der die Bezeichnung “Backups” hat.

Die Anweisung, die man in ein Terminal eingeben müsste, würde wie folgt aussehen:

$ rsync -av --delete /Users/bodo/Documents/Skripte /Volumes/Backups

Dabei verwende ich die Archivierungsoption -a (archive) und lasse mir mit -v (verbose) Meldungen ausgeben. Die Option --delete bewirkt, dass Dateien, die im Quellverzeichnis gelöscht worden sind, auch im Zielverzeichnis gelöscht werden.

Den Pfad

/Users/bodo/Documents/Skripte

schließe ich nicht mit einem Slash (/) ab, was dazu führt, dass im Zielverzeichnis ein Ordner — hier mit der Bezeichnung “Skripte” — angelegt wird.

Wichtiger Hinweis: Bei rsync ist die Verwendung der richtigen Syntax von besonderer Bedeutung. Andernfalls kann es zu Datenverlust kommen. Aus diesem Grund solltet Ihr zunächst von einem Testordner (mit bedeutungslosem Datenmüll) ein Backup erstellen und Euch dann erst an die wirklich wichtigen Dateien heranwagen.

Shellskript für macOS

Die rsync-Anweisung “verpacke” ich nun in ein Shellskript:

#!/bin/bash

SOURCE="/Documents/Skripte"
DESTINATION="/Volumes/Backups"

rsync -av --delete $HOME/$SOURCE $DESTINATION
echo "All files copied to $DESTINATION." | grep --color $DESTINATION
exit

Die entscheidende Zeile ist:

rsync -av --delete $HOME/$SOURCE $DESTINATION

Um flexibel zu sein, verwende ich für das Quellverzeichnis ($SOURCE), für das Zielverzeichnis ($DESTINATION) und das Benutzerverzeichnis ($HOME) Variablen.

Mit

$ chmod +x backups.sh

wird das Skript ausführbar gemacht, so dass es mit

$ ./backups

gestartet werden kann.

Shellskript für Linux (Ubuntu)

Für Linux (Ubuntu) müssen kleine Anpassungen vorgenommen werden. Wenn Ihr eine deutschsprachige Version nutzt, dann heißt dass Quellverzeichnis in der Regel

SOURCE="/Dokumente/Skripte"

Andernfalls ist folgender Pfad zu verwenden:

SOURCE="/Documents/Skripte"

Laufwerke werden unter Ubuntu in das Verzeichnis media/<Benutzer> eingebunden. Folglich ist das Zielverzeichnis in

DESTINATION="/media/bodo/Backups"

zu ändern.

An dem Skript ließe sich selbstverständlich noch einiges verbessern. So wäre beispielsweise eine Fehlerbehandlung wünschenswert. Ich überlasse es Euch, in diesem Sinne das Skript zu erweitern.

Weiterführende Links

Zuletzt aktualisiert am 22. August 2022