automatische Sicherungen von Daten mit rsnapshot und anacron
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/emma/.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/emma/.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/emma/ 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/emma/.config/anacron/cron.daily
7 10 user.weekly nice run-parts --report /home/emma/.config/anacron/cron.weekly
30 30 user.monthly nice run-parts --report /home/emma/.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/emma/.config/anacron/anacrontab -S /home/emma/.config/anacron/spool/ &> /home/emma/.cache/anacron.log