Wer einen Server betreibt, kann unter Linux mit einfachen Bordmitteln ein tägliches Backup erstellen lassen. Dazu benötigen wir lediglich das Programm tar und den Dienst cron. Am ersten jeden Monats wird ein vollständiges Backup erstellt und an jedem folgenden Tag werden nur die Änderungen vom Vortag gespeichert. Das spart ungemein Speicherplatz, vor allem da sich in den meisten Dateibäumen nur ein kleiner Teil der Daten täglich ändert.

Vorbereitungen

Als Beispielsystem wird hier Ubuntu angenommen, wobei im Prinzip jedes andere Unix (auch Mac OS X) ähnlich funktionieren dürfte.

Folgende Software muss auf dem System vorhanden sein:

  • tar
  • cron (Alternativ könnte man hier vermutlich mit anacron arbeiten, z.B. für Laptops. Darauf will ich hier jedoch nicht eingehen)

Praktisch alle modernen Unix-Systeme installieren beide Programme standardmäßig.

Das Backup-Skript

Man lege das Backup-Skript in ein Verzeichnis z.B. /usr/local/sbin/ mit folgenden Befehlen:

Damit wird ein Skript erstellt, dass Backups inkrementell erstellen kann. Man kann folgende Parameter ändern:

  • BACKUPDIR Verzeichnis, in das die Backups gespeichert werden. Könnte also auch eine USB-Festplatte sein (z.B. über /media/USB).
  • LASTMONTHDIR Name des Verzeichnisses für letzten Monat
  • TSNAME Name der Timestamp-Datei
  • BACKUPNAME Präfix der Backups
  • DIRS Liste der Verzeichnisse, die gespeichert werden sollen

Eleganter wäre hier mittelfristig eine Parameterübergabe per Kommandozeile, vielleicht hat jemand Lust, das zu erstellen und mir zu schicken…

Es gibt im Skript 2 Modi: a) vollständiges Backup (mit Parameter “complete”) und b) inkrementell. Beim vollständigen Backup werden die alten Daten in einen Unterordner “lastbackup” verschoben, damit auf den letzten Monat noch zugegriffen werden kann, falls Bedarf besteht.

cron einrichten

Nach der Einrichtung des Skripts kann man cron einrichten. In den meisten Fällen wird man vermutlich das Skript als root ausführen lassen wollen:

Hier folgende Zeilen einfügen:

Damit wird am ersten jeden Monat um 1:10 ein komplettes Backup erstellt und an allen anderen Tagen ein inkrementelles. Der cron-Dienst muss hierzu laufen (bei MacOS X schaltet der Dienst sich, glaube ich, direkt ein, sobald ein crontab existiert).

Der Bedarfsfall: Retten der Daten

Um einen bestimmten Zustand wiederherzustellen, muss man die Sicherungen nacheinander einspielen. Dabei wird mit der Vollsicherung begonnen. Dann werden nacheinander die inkrementellen Snapshot-Archive eingespielt.

Vollständig sollte das mit folgenden Befehlen gehen:

Meinungen und Hinweise nehme ich gerne entgegen!