Daten zeitgesteuert via Cronjob zu sichern ist unter Linux kein Problem und lässt sich einfach konfigurieren. Zunächst braucht man eine ausführbare Datei, die man später via CronJob ansprechen kann. Idealerweise hat auch nur der ausführende Benutzer die Berechtigungen auf die entsprechende Datei. Für Web.- und Datenbankserver ist es nicht ideal, weil die Daten gerade bei stark frequentierten Seiten oft verändert werden im Laufe des Backups, aber bei kleineren Seiten ist das in der Regel kein Problem.

#!/bin/bash
webserver=`date +%Y%m%d`_webserver.tar.gz
databases=`date +%Y%m%d`_databases.sql.gz
system=`date +%Y%m%d`_system.tar.gz

/usr/bin/tar -czf /backup/$webserver /var/www/
/usr/bin/tar -czf /backup/$system /etc/
/usr/bin/mysqldump -u USER-pPASSWORD --all-databases | /usr/bin/gzip > /backup/$databases

Im obigen Beispiel werden drei Dateinamen in Variablen mit dem aktuellem Datum gespeichert. Gespeichert wird der Webserver Root, das Verzeichnis etc und ein kompletter MySQL Dump, der gepiped auf gzip noch gepackt wird. Letztes sollte man nicht vernachlässigen, denn aus einem 150 MB MySQL Dump kann locker eine nur 10 MB große Archiv-Datei werden. In vielen Fällen macht es aber auch Sinn die Datenbanken einzeln zu sichern. Hierfür muss dann einfach pro Datenbank eine Dump erzeugt werden.

Im Crontab selbst soll die Sicherung am 1 und 15 jeden Monats erfolgen.

Das Schema „der Zeitangaben“ dazu packe ich mir immer als Gedächtnisstütze ebenfalls auskommentiert dazu. Mit dem Kommando crontab -e kann der neue CronJob ergänzt werden.

root@srv03:/ # crontab -e

# minute         0-59
# hour           0-23
# day of month   1-31
# month          1-12 (or names, see below)
# day of week    0-7 (0 or 7 is Sun, or use names)

30   22   1,15    *       *       /PFADZUMSCRIPT/backup.sh