Backups
Aus Fedorawiki.de
Dieser Artikel beschäftigt sich mit den verschiedenen Möglichkeiten, unter Fedora Backups zu erstellen. Es kann sehr mühsam sein, größere Datenbestände zu sichern, und diese Sicherung dann auch noch aktuell zu halten. Es gibt deswegen eine Reihe von Werkzeugen, die diese Aufgaben vereinfachen. Die für Fedora wichtigsten werden hier vorgestellt.
Inhaltsverzeichnis |
rsync
rsync ist ein Programm, um zwei Ordner, bei Bedarf auch remote (daher das r in rsync) abzugleichen. Dabei ist der Name etwas irreführend: rsync kann nicht synchronisieren, sondern nur replizieren. Das heißt, dass es möglich ist, Veränderungen im Ordner A_original auf den Ordner B_backup zu übertragen, aber nicht umgekehrt - wenn in B_backup etwas geändert wird, wird diese Änderung nicht auf A_original übertragen!
Für solche Fälle ist Unison gedacht.
Verwendung
Die eigentliche Verwendung von rsync findet so statt
rsync -OPTIONEN QUELLE ZIEL
Ziel und Quelle könne dabei Ordner auf beliebigen Maschinen sein - z.B. auch
rsync -OPTIONEN foo:/home/secureme baa:/home/backup
So können also auch zwei fremde Rechner synchronisiert werden.
| | Anmerkung: Wird bei einem Quellverzeichnis abschließend ein / mit angegeben, wird nur der Inhalt des Verzeichnisses kopiert, nicht aber das Quellverzeichnis selbst |
Die Optionen, die man angeben kann, sind vielfältig. Hier ein Auszug der Wichtigsten:
| rsync-Optionen | |||
|---|---|---|---|
| Option | Name | Bedeutung | |
| -a | archive | Rechte, symbolische Links, etc. bleiben erhalten | |
| -b | backup | Backups werden erstellt | |
| --delete | Dateien, die auf der Quelle nicht mehr existieren, werden auch auf dem Ziel gelöscht | ||
| -e | execute | führt ein zusätzliches Kommando aus | |
| -e "ssh" | die Übertragung findet über ssh, also verschlüsselt statt | ||
| -n | dryrun | ein Testlauf, der nichts real kopiert | |
| --progress | zeigt den Fortschritt während der Übertragung | ||
| -r | recursive | lässt rsync rekursiv arbeiten | |
| --size-only | damit schaut rsync beim Aktualisieren nur auf die Dateigröße; nützlich, wenn der Backup-Server es nicht so genau nimmt mit den Zeitstempeln der Dateien | ||
| -u | update | Dateien, die auf dem Ziel schon vorhanden und aktuell sind, werden übersprungen | |
| -v | verbose | gibt ausführliche Meldungen über den Verlauf und eventuelle Probleme | |
| -z | compress | komprimiert die Daten | |
Beispiele
Klassisches Beispiel für das Sichern des eigenen Home-Verzeichnisses auf einem Server im Netz.
rsync -abruvz --delete --progress -e ssh /home/me foobar.com:/backup/home/me
Spiegeln von Verzeichnissen (mit Fortschrittsanzeige)
rsync -aruv --delete --progress /home/username/ /mnt/ziel/home/username/
Kopieren einer ISO-Image Datei
rsync -auv --progress rsync://ftp-stud.hs-esslingen.de/pub/fedora/linux/releases/8/Fedora/i386/iso/Fedora-8-i386-rescuecd.iso /media/Fedora-8-i386-rescuecd.iso
Besonderheiten
Die deklarierten Ziele von Erfinder und Samba-Entwickler Andrew Tridgell waren:
- rsync soll mit beliebigen Dateien funktionieren
- selbst bei großen und vielen Dateien soll das Utility flott arbeiten
- der Algorithmus darf vorab kein Wissen über Quell- und Zieldateien benötigen
- geringer Rechenaufwand
- nicht mehr Daten übertragen als ein komprimierter Diff bräuchte
- wenige Roundtrips
Ziel ist es, eine Datei (die Zieldatei) von einem Server auf einen Client zu übertragen, der eine Referenzdatei hat, welche möglicherweise zu großen Teilen mit der Zieldatei übereinstimmt.
Dazu wird als erstes vom Client die Referenzdatei in Blöcke einer bestimmten Länge unterteilt, für die jeweils zwei Prüfsummen gebildet und an den Server übertragen werden. Die erste dieser Prüfsummen kann sehr schnell berechnet bzw. in der Datei gefunden werden; die zweite stellt sicher, dass die Blöcke (mit sehr hoher Wahrscheinlichkeit) identisch sind. Danach sucht der Server in der Zieldatei nach den Blöcken, und zwar an jeder Stelle (d. h. nicht nur an Vielfachen der Blocklänge). Damit generiert der Server eine Vorschrift, wie die Zieldatei generiert werden kann, wobei entweder Teile (beliebiger Länge) der Datei übertragen werden oder auf einen der Blöcke aus der Referenzdatei verwiesen wird. Damit erhält der Client nun durch Befolgen dieser Vorschrift eine Kopie der Zieldatei.
Siehe auch
- rsync-Artikel im Linux-Magazin
- rsync im Linuxwiki
- rsnapshot
- Remote filesystem snapshots with rsnapshot
dar
| | Anmerkung: Zur Zeit gibt es dar noch in keinem Standard-Repository. Man muss es also selbst kompilieren. |
Mit Hilfe von dar können Sicherungsarchive erzeugt werden. Vorteile von dar sind unter anderem:
- die Sicherungs-Dateien werden komprimiert
- aus der Gesamtsicherung können Einzeldateien wiederhergestellt werden
- Archive können beliebig unterteilt werden, damit z.B. eine Sicherung auf mehrere CDs aufgeteilt werden kann
- es sind differentielle Backups möglich - es wird nur der Unterschied zwischen dem letzten Backup und der aktuellen Version gesichert
Links
tar
Das Kommandozeilenwerkzeug tar findet sich bei nahezu jeder Distribution und war ursprünglich dazu gedacht, Backups mit Bandgeräten zu erstellen. Es findet aber heute noch häufig Verwendung, da es Dateien und Ordner in einem Archiv zusammenfassen kann. Da es von Haus aus keine Komprimier-Fähigkeiten mit sich bringt, wird es in der Praxis meist mit Programmen wie bzip2 und gzip eingesetzt.
Verwendung
Die eigentliche Verwendung von tar findet wie folgt statt:
tar -OPTIONEN ZIEL QUELLE
Die Optionen, die man dabei mitgeben kann, sind vielfältig, hier ein Auszug:
| tar-Optionen | |||
|---|---|---|---|
| Option | Name | bedeutung | |
| -c | create | erstellt ein Archiv | |
| --exclude=MUSTER | lässt Dateien aus, die MUSTER entsprechen; kann auch mit Wildcards benutzt werden | ||
| -f | filename | gibt, gefolgt von einem Dateinamen, den Namen des Archivs an | |
| -j | bzip2 | komprimiert das Archiv später als bzip2-Datei | |
| -p | same-permissions | erhält die Dateirechte (nur UNIX, keine ACLs) | |
| -v | verbose | gibt ausführliche Meldungen über den Verlauf und eventuelle Probleme | |
Beispiele
Backup des gesamten Nutzerverzeichnisses mit anschließender Komprimierung im bzip2-Format. Dabei werden keine Dateien einbezogen, die irgendwo im Namen den String backup enthalten.
tar -cvpj --exclude=*backup* -f backup.tar.bz2 /home/use
Backups aufteilen
Nicht jedes beschriebene Backup-Format verfügt über die Möglichkeit, auf spezielle Größen zugeschnittene Backups zu erstellen. Soll zum Beispiel eine *.tar.bz2-Datei im Nachhinein auf CDs verteilt werden, obwohl sie die Größe einer DVD hat, benötigt man ein anderes Werkzeug, split. Die Bedienung ist dabei simpel. Soll eine bestehende Datei in mehrere Dateiteile zerlegt werden, reicht der Befehl
split --verbose -b 700m archiv.tgz archiv.tgz.split.
Dabei werden mehrere Dateien mit den Namen archiv.tgz.split.aa, archiv.tgz.split.ab usw. erstellt. Will man diese später wieder zusammen fügen, genügt ein einfaches
cat archiv.tgz.split.* > archiv.tgz
Backups automatisieren
Ein Backup jedesmal von Hand auszuführen ist natürlich nur bedingt Sinn der Sache, da es auch schonmal vergessen werden kann. Besser wäre es, das Backup automatisch und ohne Interaktion durchzuführen. Dies kann auf zwei Wegen geschehen: Einmal pro Tag/Woche/Monat oder zu einer bestimmten Zeit. In diesem Beispiel wird nur auf die erste Variante eingegangen. Das Problem bei Cronjobs für Heim-PCs ist, dass diese normalerweise zu einer bestimmten Zeit durchgeführt werden und der Rechner daher zu diesem Zeitpunkt auch eingeschaltet sein muss. Eine Alternative stellt hier zum normalen cron der Dienst anacron dar, der tägliche Cronjobs beim ersten Start des PCs am Tag, wöchentliche Cronjobs beim ersten Start des PCs in der Woche und monatliche Cronjobs beim ersten Start des PCs im Monat ausführt. anacron ist dabei direkt in Fedora Core enthalten:
Zum erstellen eines wöchentlichen Backups erstellt ein Script unterhalb von /usr/local/bin/ in das Ihr die Befehle für das Backup schreibt. Wichtig dabei ist, dass der Name dieses Scripts keine Umlaute und auch keinen Punkt enthält, also z.B. nicht wöchentliches-backup.sh. Es muss zudem natürlich ausführbar sein. Danach wird es verlinkt:
ln -s /usr/local/bin/weekly-backup /etc/cron.weekly/
Es stehen dabei vier Möglichkeiten zur Auswahl:
- /etc/cron.hourly/ (für eine stündliche Ausführung direkt durch cron, nicht anacron)
- /etc/cron.daily/ (für eine tägliche Ausführung)
- /etc/cron.weekly/ (für eine wöchentliche Ausführung)
- /etc/cron.monthly/ (für eine monatliche Ausführung)
Wichtig dabei zu wissen wäre noch, wann die Cronjobs durch anacron ausgeführt werden:
- täglich Cronjobs 65 Minuten nach Rechnerstart
- wöchentliche Cronjobs 70 Minuten nach Rechnerstart
- monatliche Cronjobs 75 Minuten nach Rechnerstart
Auf einem Desktop-Rechner ist es mitunter sinnvoll, die Startzeiten herunterzusetzen. Dazu muss mit dem Editor der Wahl die Datei /etc/anacrontab editiert werden.
anacron merkt sich dabei natürlich, ob ein Cronjob in diesem Zyklus schon einmal ausgeführt wurde und startet diesen dann nicht noch einmal.
Graphische und alternative Lösungen
Es existieren in den Standard-Repositories diverse graphische Lösungen für Backup-Fragen.
- pyBackPack ist eine graphische Backup-Lösung für Einzelplatzsysteme.
- Amanda ist ebenfalls ein Backup-System, welches für Netzwerke und mehrere Systeme gedacht ist.

