rsync inkrementelles Backup – Part 4

Ein paar Worte zum Datum, die Rechnerei mit dem Datum ist immer so eine Sache. Schreibe ich mir eine eigene Routine, muss ich immer Monats- und Jahreswechsel berücksichtigen. Zum Glück kennt Linux ein paar einfache Datumsroutinen.

Datum im shell script ermitteln

Ich möchte meine inkrementellen Backups mit rsync in eigenen Ordnern mit einem Datum haben. Als Beispiel soll mein Verzeichnis 2014-03-05_backup heissen. Üblicherweise würde ich jetzt so etwas wie "date +%Y-%m-%d" benutzen.

Damit lässt sich aber leider nicht rechnen und im script muss ich dann auch noch immer das Verzeichnis für den Vergleich anpassen, wenn erst einmal die Routine zum Löschen alter Backup-Verzeichnisse greift.

Meine Überlegung geht dahin, 30 Tage als Sicherung vorzuhalten, am 31 Tag wird das Verzeichnis von Tag 1 gelöscht und das Verzeichnis von Tag 2 für den Vergleich benutzt.

Dazu habe ich mir den Befehl "date" genauer angesehen. Mit "date -I" bekomme ich mein Datum genau in der Form wie ich es möchte. Mit ´date -I -d "30 days ago"´ bekomme ich auch noch ein Datum, dass 30 Tage zurückliegt – für mein Vorhaben also völlig passend.

Kein rechnen und aufpassen, dass Monatsgrenzen oder Jahre nicht richtig berücksichtigt werden. Probiert es aus, ich finde einfach genial.

Das Backup Script

Die Pfade müsst ihr natürlich auf eure eigenen Bedürfnisse anpassen, als Beispiel nehme ich hier mein home Directory. Nachdem das script erstellt ist, muss es natürlich noch ausführbar (z.B.: chmod a+x /usr/local/bin/backup.sh) gemacht und in die /etc/crontab eingebunden werden.

#!/bin/bash
# Website Backup Script
# Heute:
DAY0=`date -I`
# Gestern:
DAY1=`date -I -d "1 day ago"`
#
SOURCE="/home/meinhome/"
#
TARGET="/backup/home/$DAY0_backup"
#
LINK="/backup/home/$DAY1_backup"
# rsync options:
OPTIONS="-a --delete --link-dest=$LINK"
#
rsync $OPTIONS $SOURCE $TARGET

# 30 Tage zurück
DAY30=`date -I -d "30 days ago"`
# Lösche Backup, wenn es existiert
if [ -d /backup/home/$DAY30_backup ]
then
rm /backup/home/$DAY30_backup
fi

Das einbinden in die /etc/crontab habe ich schon hier beschrieben.

Für das script kann ich natürlich keine Gewähr übernehmen und ob das alles bei euch so klappt, kann ich auch nicht vorhersagen. Also ihr benutzt das script auf eigene Gefahr!

Ich hoffe, diese Artikel haben euch gefallen und ihr könnt mit diesen Beispielen etwas anfangen.

Comments are closed.

Menu Title