Backups mit Rsync – Part 3: Vereinfachung per Script

Das Script:


#!/bin/sh

# Diese Verzeichnisse nicht sichern
EXCLUDE="/proc/**:/dev/**:/mnt/**:/sys/**"

# Diese Datei hier einfügen, hierüber kann z.B
# EXCLUDE verändert werden, oder DIR und
# DEST fest eingetragen werden
if [ -f /etc/rbackup ]; then
source /etc/rbackup
fi

# einige optionen setzen:
# -z Kompression verwenden
# -v Verbose
# -H Hardlinks beibehalten
# -S Sparse Files als Sparse Files Kopieren
# -h Human readable
# -i Mehr infos pro datei Anzeigen
# --numeric-ids Berechtigungen anhand von uid/gid
# nummern setzen, nicht anhand des Namens
# --progress Fortschritt anzeigen
# --stats Zusammenfassung am Schluss anzeigen
# --link-dest Siehe Part2
OPTS="$OPTS --link-dest=../latest -azvHShi \
--numeric-ids --progress --stats"

# Wenn Verzeichnisse per Komandozeile übergeben
# werden, dann bitte Source und Destination
# angeben
if [ -n "$*" ]; then
if [ -z "$2" ]; then
echo "Missing destination"
exit
fi
DIR="$1"
DEST="$2"
fi

# Wenn DIR/DEST nicht aus /etc/rbackup hervorgeht
# und nicht über die Komandozeile mitgegeben wurde
# Mekern und Beenden
[ -z "$DIR" ] && echo "Missing source dir" && exit
[ -z "$DEST" ] && echo "Missing destination dir" \
&& exit

# Datum Feststellen (2006-12-27_20-43)
DATE=`date +%Y-%m-%d_%H-%M`

# unser Zielverzeichnis zusammensetzen
DATEDEST="$DEST/$DATE"

## Da wir oben die Excludes so faul angegeben
## haben, müssen wie das hier etwas entfalten
# Altes Trennzeichen sichern
IFSBACK=$IFS
# Trennzeichen auf : setzen
IFS=":"
# Excludes zu den Optionen hinzufügen
OPTS="$OPTS `for dir in $EXCLUDE; \
do echo -n \"--exclude=$dir \" ; done`"
# Alte Trennzeichen wieder herstellen
IFS=$IFSBACK

# Source zu Optionen hinzufügen
OPTS="$OPTS $DIR"

# Destination zu Optionen hinzufügen
OPTS="$OPTS $DATEDEST"

echo "Starting rbackup"

# Anzeigen welches komando wir uns erspart haben
echo rsync $OPTS

# rsync aufrufen
rsync $OPTS

# Exit Status sichern
rok=$?

if [ "$rok" == "0" ]; then

echo "Backup complete, creating softlink"

# Wir erzeugen einen softlink, der immer auf das
# letzte backup zeigt, benötigt, damit wir mit
# --link-dest=../latest arbeiten können. Wir
# erzeugen den link lokal, und kopieren ihn zum ziehlverzeichnis
ln -s $DATE latest
rsync -a latest $DEST/
rm latest
echo "done"

else
echo "Something went wrong"
fi

Die Datei /etc/rbackup sieht bei mir so aus:


# Eigene Excludes setzen
EXCLUDE="proc/:sys/:tmp/"
EXCLUDE="$EXCLUDE:/mnt/network/:mnt/cdrom/:lost+found/"
EXCLUDE="$EXCLUDE:'*~'"

# Ziel setzen
DEST="micha-server:/freigaben/backup/laptop"

# Quelle Setzen
DIR="/"

Leave a Reply

Your email address will not be published. Required fields are marked *