Hier möchte ich mein Verfahren zur periodischen Sicherung meiner persönlichen Daten auf dem Laptop beschreiben. Es werden mehrere (täglich, wöchentlich, monatlich) Versionen auf meine externe Festplatte gesichert, dazu verwende ich rsnapshot unter Linux und erkläre auch, wie man auf Benutzer-Ebene mit anacron periodische Vorgänge ausführen lässt, ohne dass root in’s Spiel kommt.

Wem seine Daten lieb sind, der sichert sie. Wer das aber nicht automatisch machen lässt, macht es ja dann doch nicht. Alle Dateien von Hand markieren und kopieren ist viel zu aufwändig, als dass man es häufig machen würde - man lässt es schnell einfach bleiben. Ein altes Backup, anfangs ersetzt, als die guten Vorsätze noch frisch waren, ist dann auch nur noch begrenzt hilfreich. Ein Backup automatisch laufen zu lassen ist dabei nicht besonders schwierig und bietet viel geistigen Frieden. Was man dazu braucht ist lediglich irgend ein externer Datenträger und man ist für die häufigsten Probleme gewappnet.

Grundlagen

Zunächst ein paar wichtige Grundüberlegungen. Wie eingangs schon erwähnt, sollte so ein Backup durchaus automatisch ablaufen, damit es überhaupt mal gemacht wird. Jedes Jahr mal eine CD brennen ist nur praktikabel, wenn man auf die Daten von 364 Daten verzichten kann. Darüber hinaus noch ein paar mehr Überlegungen

Kopie anlegen

Die Erfahrung lehrt leider, dass es erwähnt werden muss: Eine Sicherung bringt nur viel, wenn es sich um eine Sicherungskopie handelt. Daten lediglich auf einer externen Festplatte oder, schlimmer noch, einem USB-Stick zu “sichern” ist genauso schlecht wie sie gar nicht zu sichern. Geht die Festplatte kaputt oder der Stick verloren, sind die Daten mit weg. Externe Festplatten oder Sticks sind nicht zuverlässiger als interne Festplatten von Laptops und Computern, man gewinnt also kaum Datensicherheit durch alternatives Speichern.

Eine Kopie muss also her, damit, wenn ein Datenträger kaputt geht, man noch einen hat. So einfach ist das.

Mehrere Kopien anlegen

Eine einzelne Kopie hilft schon mall, wenn man den Datenträger verliert oder wenn er kaputt geht. Wenn das Problem allerdings ein Anwenderfehler ist, etwa dass man ein Dokument unbeabsichtigt und unbemerkt überschreibt und dann davon ein Backup macht, sind die dort enthaltenen Daten genauso verloren. Vielleicht will man aber auch einfach eine vorherige Version eines Dokumentes wiederherstellen oder vergleichen. Es bietet sich also an, mehrere Sicherungskopien der Daten anzulegen

Strukturiertes Verfahren

Nur eingeschränkt nützlich ist darüber hinaus behelfsmäßige Versionierung der Dokumente: “Aufsatz vorläufig.odt”, “Aufsatz final.odt”, “Aufsatz final (Kopie).odt”, “Aufsatz (wirklich final).odt”, “Aufsatz 2.odt”. Nicht nur kennt man sich irgendwann nicht mehr aus, so eine “Sicherungskopie” hilft zwar schon eingeschränkt gegen unbeabsichtigtes Überschreiben, nicht aber gegen Datenverlust bei kaputten Datenträger.

mehrere Datenträger verwenden

Eine Sicherungskopie auf dem selben Datenträger hilft auch nur, wenn man unbeabsichtigt Daten überschreibt. Ist allerdings der Datenträger kaputt, gehen damit auch alle Sicherungskopien verloren - offensichtlich.

Eingeschränkte Sicherheit

Kein Verfahren deckt alle Problemfälle ab. Das in der Folge beschriebene Verfahren ist zwar eine Lösung für die häufigsten Probleme, hat aber eine entscheidende Schwachstelle: Passiert etwas schlimmeres als ein Computerproblem, etwa ein Brand, Einbruch oder ähnliches verschwinden sowohl der Computer mit den Daten drauf als auch auch die externe Festplatte mit den Sicherungskopien. Es empfiehlt sich also, irgend eine Art externes Backup hinzuzufügen, bei dem man etwa den Datenträger an einem anderen Ort lagert oder das ganze über das Internet sichert. Diese Verfahren werden in diesem Beitrag allerdings nicht behandelt.

Verfahren: Periodisches Sichern auf Datei-Ebene unter Linux

Mein Verfahren beschreibt das periodische Sichern auf Datei-Ebene (nicht auf Datenträger-Ebene) unter Ubuntu 12.04 mit Hilfe von rsnapshot. Dabei wird täglich ein Verzeichnis (mein Heimverzeichnis mit all meinen Daten) gesichert. Nur geänderte Daten verbrauchen zusätzlichen Speicherplatz, außerdem werden einstellbar viele alte Versionen vorgehalten - etwa 7 tägliche Sicherungen, 4 wöchentliche, 3 monatliche Sicherungen. Die Dateien liegen außerdem bequem alle in Verzeichnissen herum, aus denen man sie einfach herauskopieren kann - nicht etwa in schwerer zugänglichen Archiven oder Datenträgerabbilden.

Installation

Für die regelmäßige Sicherung mit Hilfe von rsnapshot braucht man folgende Programme, die sich in den meisten Linux-Distributionen in den Paketquellen befinden sollten:

  • rsnapshot
  • anacron

rsnapshot sichert die Dateien, anacron kümmert sich um den periodischen Start der Sicherung. Anders als cron muss dazu der Computer nicht dauernd laufen und man kann trotzdem als Ziele “täglich”, “wöchentlich”, etc angeben.

rsnapshot

Man sollte bereits eine externe Festplatte oder sonstigen Datenträger bereithalten und irgendwo in’s Dateisystem eingebunden haben, rsnapshot ist auch schon installiert. Nun legen wir im Dateisystem die Konfiguration von rsnapshot an. Ich habe mich dafür entschieden, rsnapshot nicht als root laufen zu lassen, um meine Daten unabhängig vom eingesetzten System zu belassen.

Man muss zwei Konfigurationsdateien erstellen: Einmal die Konfiguration für rsnapshot selbst, dann noch eine Liste mit Ausnahmen vom Backup, für den Papierkorb, caches, etc. Die Dateien können natürlich nicht blind übernommen werden, man muss die Pfade vorher schon noch anpassen:

#################################################
# rsnapshot.conf - rsnapshot configuration file #
#################################################
#                                               #
# PLEASE BE AWARE OF THE FOLLOWING RULES:       #
#                                               #
# This file requires tabs between elements      #
#                                               #
# Directories require a trailing slash:         #
#   right: /home/                               #
#   wrong: /home                                #
#                                               #
#################################################

#######################
# CONFIG FILE VERSION #
#######################

config_version  1.2

###########################
# SNAPSHOT ROOT DIRECTORY #
###########################

# Der Pfad, unter dem die Backups gespeichert werden sollen. 
snapshot_root   /media/extern2/Backup/Laptop/Snapshots/

# Wichtige Option bei Verwendung externer Datenträger,
# die vielleicht nicht immer eingehängt werden: Das Verzeichnis
# für die Backups nicht erstellen. Wenn der Datenträger nicht 
# eingehängt ist, wird dann auch kein Backup gemacht
#
no_create_root  1

#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################

cmd_cp      /bin/cp
cmd_rm      /bin/rm
cmd_rsync   /usr/bin/rsync
cmd_logger  /usr/bin/logger

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

# wie viele Sicherungen vorgehalten werden sollen
# wer stündlich Sicherungen machen will, kann das 
# ebenfalls festlegen
#
#retain     hourly  6
retain      daily   7
retain      weekly  4
retain          monthly 3

############################################
#              GLOBAL OPTIONS              #
# All are optional, with sensible defaults #
############################################

# Verbose level, 1 through 5.
# 1     Quiet           Print fatal errors only
# 2     Default         Print errors and warnings only
# 3     Verbose         Show equivalent shell commands being executed
# 4     Extra Verbose   Show extra verbose information
# 5     Debug mode      Everything
#
verbose     2
loglevel    3

# diesen Pfad anpassen!
lockfile    /home/florian/.local/share/rsnapshot.pid

# Eine Datei, in der Ausnahmen für die Sicherung definiert werden
# Man sollte etwa den Papierkorb, caches, etc ausschließen
# (die Datei wird direkt an rsync übergeben)
#
exclude_file    /home/florian/.config/rsnapshot-excludes

# If your version of rsync supports --link-dest, consider enable this.
# This is the best way to support special files (FIFOs, etc) cross-platform.
# The default is 0 (off).
#
link_dest   1


###############################
### BACKUP POINTS / SCRIPTS ###
###############################


# Das zu sichernde Verzeichnis natürlich anpassen
#
backup  /home/florian/      localhost/

VirtualBox VMs/
.cache/
.dbus/
.gvfs/
.local/share/gvfs-metadata/
.local/share/Trash/

Ich habe beide Dateien einfach nach ~/.config/ installiert. Man kann wie folgt dann die Konfiguration testen:

rsnapshot -t -v -c ~/.config/rsnapshot.conf daily

Klappt alles, kann man direkt die erste Sicherung erstellen lassen:

rsnapshot -c ~/.config/rsnapshot.conf daily

Zur Erklärung noch: rsnapshot arbeitet mit Hardlinks, d.h. in mehreren Sicherungen identische Dateien belegen nur einmal ihren Speicherplatz, nicht pro Sicherung.

anacron

Die meisten Linux-Distributionen liefern anacron bereits mit und verwenden es für Dinge wie Rotation von Logdateien oder sonstige Systemdienste. Dabei läuft anacron meist als root und die Konfigurationsdateien liegen deswegen auch in /etc und gehören root. Ich halte meine Daten gern vom System unabhängig, deswegen auch das Backup. Die Konfiguration des systemweit eingesetzten anacron in mein Heimverzeichnis zu verlegen wäre allerdings fahrlässig! Als Resultat lägen vom Benutzer änderbare Shellscripte herum, die dann von root ausgeführt würden - eine große Sicherheitslücke und ein Rezept für ein Desaster. Stattdessen starten wir einen zweiten anacron-Prozess als Benutzer mit eigenen Konfigurationsdateien, die dann auch praktischerweise direkt mitgesichert werden.

Zunächst brauchen wir eine Verzeichnisstruktur:

mkdir -p ~/.config/anacron/cron.{daily,weekly,monthly}
mkdir -p ~/.config/anacron/spool
touch ~/.config/anacron/cron.{daily,weekly,monthly}/rsnapshot
touch ~/.config/anacron/anacrontab

Daraus ergibt sich dann folgende Struktur:

anacron/
├── anacrontab
├── cron.daily
│   └── rsnapshot
├── cron.monthly
│   └── rsnapshot
├── cron.weekly
│   └── rsnapshot
└── spool

Nun müssen wir noch die einzelnen Aufgaben erstellen sowie für deren Aufruf sorgen:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

1 5 user.daily nice run-parts --report /home/florian/.config/anacron/cron.daily
7 10 user.weekly nice run-parts --report /home/florian/.config/anacron/cron.weekly
30 30 user.monthly nice run-parts --report /home/florian/.config/anacron/cron.monthly

Die letzten drei Dateien müssen natürlich mit Dateinamen rsnapshot in die jeweiligen Verzeichnisse gestellt werden. Dann müssen sie noch als ausführbar markiert werden:

    chmod +x ~/.config/anacron/cron.{daily,weekly,monthly}/rsnapshot

Aktivieren

Das Gerüst steht jetzt - täglich, wöchentlich und monatlich werden Sicherungen angelegt und wie voreingestellt aufbewahrt. Alte Sicherungen werden gelöscht, damit genug Platz übrig bleibt. Um den Automatismus der Sicherung zu aktivieren, muss noch bei jedem Login ein anacron-Prozess gestartet werden. Dazu wird als letzte Zeile in der Datei ~/.profile eingefügt:

/usr/sbin/anacron -t /home/florian/.config/anacron/anacrontab -S /home/florian/.config/anacron/spool/ &> /home/florian/.cache/anacron.log