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