Backups unter Debian GNU/Linux - Grundlagen und Beispiele
Dieses Howto beschäftigt sich mit Backups unter Debian GNU/Linux und bietet dafür Grundlagen und Beispiele. Der Schwerpunkt liegt dabei beim Serverbackup mit den Tools tar, rsync, nfs, DVD±RW und anderen.
Ziel dieses Howto ist es, das grundlegende Wissen zu erlangen, das für möglichst problemlose und sichere Backups im täglichen Betrieb benötigt wird. Die hier erläuterten Maßnahmen und Beispiele sollen als Basis dienen und zu eigener Kreativität motivieren.
Autor des Artikels ist Daniel Knabl (daniel [at] knabl [dot] com); der Text ist unter einer Creative-Commons-Lizenz freigegeben: Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 2.0 Deutschland
Feedback zu diesem Dokument ist natürlich willkommen, fachliche Fragen bitte an die Mailingliste (howto [at] lists [dot] debianhowto [dot] de), sonstige Fragen an den Autor Daniel Knabl (daniel [at] knabl [dot] com).
Contents
|
Grundlagen
Backups und das dafür notwendige Wissen sollten jedem Computerbenutzer ein Anliegen sein. Wer weiß schon, wann eine Festplatte den Geist aufgibt, wann ein böser Wurm oder ein Virus durchschlüpft oder irgendetwas anderes passiert, was wertvolle (einmalige) Daten beschädigt oder gar vernichtet.
Um ein Backup-Script regelmäßig auszuführen dient unter Debian (und allen anderen *nix-artigen Systemen) der Scheduler cron. Er ermöglicht zeitgesteuerte Ausführung von Befehlen.
Die grundlegende Konfiguration und Bedienung von cron ist in der Manpage gut dokumentiert. Daher hier nur einige nützliche Überlegungen:
- einmal pro monat Full Backup auf DVD
- einmal wöchentlich Full Backup auf entfernten Rechner
- einmal täglich incremental Backup auf andere Platte/Partition
Diese Strategie wäre bereits sehr sicher, da sowohl auf einem Datenträger (DVD) als auch auf einem entfernten Rechner (zB ein gemieteter Rechner in einem Rechenzentrum) komplett vollständige Backups erzeugt werden, und zusätzlich täglich die Veränderungen in incremental Backups festgehalten werden.
Die Einträge in crontab könnten so aussehen:
25 1 1 * * root test -x /usr/local/sbin/fullbackup.dvd.sh 47 0 * * 7 root test -x /usr/local/sbin/fullbackup.local.sh 52 0 * * * root test -x /usr/local/sbin/backup.daily.sh
Unterschied Full und incremental Backup
Ein Full Backup (Vollständige Datensicherung) ist ein vollständiges Backup, es werden also alle Dateien gesichert, egal ob sie verändert wurden, oder nicht.
Ein Incremental Backup (inkrementelle Datensicherung) ist ein teilweises Backup, es werden nur Dateien gesichert, die ein bestimmtes Kriterium erfüllen. Als solches Kriterium verwendet man gewöhnlich “die Datei wurde seit dem letzten Backup verändert” oder “die Datei wurde seit X Tagen nicht mehr gesichert”.
Struktur - was wann wie wohin sichern
Da wir hier ein Debian-System als Grundlage verwenden, kann man sich sehr gut an den FHS, den Filesystem Hirarchy Standard, halten. Abhängig von einigen Fragen wird man schnell wissen, was zu sichern ist
- Werden Programme selbst kompiliert?
- Werden Pakete aus den Sourcen gebaut?
- Verwende ich Pakete, für die keine Pakete (mehr) existieren?
- Sichern Benutzer ihre Dateien selbst?
- Gibt es gemeinsam genutzte Bereiche (Freigaben, /pub ...)
Abhängig von der Wichtigkeit der Daten weiß man schnell, wie oft/wann man sie sichert
- Finden auf dem Server sehr viele Schreibzugriffe (Datenbank, Mail...) statt?
- Wird der Server gewerblich genutzt?
- Bist du gesetzlich verpflichtet, gewisse Daten sicher zu speichern?
Abhängig von den beiden ersten Überlegungen:
- Wie groß sind die zu sichernden Daten
- Wie sicher muss das Backup - “subjektiv” betrachtet - sein
Folgede Optionen stehen zur Verfügung, aus denen - nach nach Ansprüchen - ausgewählt werden kann:
- SCSI
- für Hochsicherheits-Backups
- und/oder geringere Datenmengen
- extrem hohe Geschwindigkeiten
- SATA-Raid und NFS
- für mittlere Sicherheit
- und/oder mittlere Datenmengen
- hohe Geschwindigkeiten
- IDE-Raid und USB-Festplatten
- für geringe Sicherheit
- und/oder sehr große Datenmengen
- mäßige Geschwindigkeiten
Technik - einzelne Werkzeuge vorgestellt
Die Standard-Tools
cp und tar
cp und tar sind wohl nur für Komplettbackups geeignet, dafür aber auf (beinahe) jedem System vorhanden.
Die Bedienung von cp ist einfach und nicht sonderlich umfangreich:
Syntax:
- cp -a 'was' 'wohin'
Beispiel:
- cp -a /usr/local /bak/usr/local
Komprimiert und vielleicht auf einen anderen Rechner, anstatt nur auf eine andere Partition oder Festplatte gehts dann mit tar:
Syntax:
- tar -cvvzf 'wohin' 'was'
Beispiel:
- tar -cvvzf daniel@dk10:~/backup.tar.gz /home/daniel
‘wohin’ kann DATEI, RECHNER:DATEI oder BENUTZER@RECHNER:DATEI sein.
Umfangreichere Tools
rsync und bashscripte
rsync und bashscripte sind auch für inkrementelle Backups geeignet, dafür aber nicht auf jedem System vorhanden.
Die Bedienung von rsync ist recht umfangreich und komplexere Aktionen sind möglich:
Syntax:
- rsync [optionen] 'was' 'wohin'
Mehr dazu unter man rsync.
Nun folgen ein paar Beispiele aus meinen Backupscripten:
Beispiele:
- rsync -avuz --delete --exclude '*~' --exclude '*mp3' /home/daniel/ daniel@dk10:/home/daniel/laptop
- Synchronisiert mein vorhandenes Backup auf dem Server. Nicht vorhandene Dateien werden gelöscht (–delete), mp3 Dateien und Backups werden ausgelassen (–exclude ‘*mp3’ und –exclude ‘*~’).
- rsync -avuz --exclude '**/CVS' daniel@dk10:/pub/vexim-2.0.1/ /home/daniel/vexim-2.0.1
- Damit synchronisiere ich meine Arbeit vom Server auf den Laptop, wobei sämtliche CVS Verzeichnisse weggelassen werden.
Mehr zu den Optionen von rsync:
- -a archive mode = -rlptgoD
- -v verbose
- -z compress
- -u update; skip newer files
- -r recursive
- -g preserve group
- -l copy symlinks
- -p preserve permissions
- -o preserve owner
- -t preserve times
- -D preserve devices
Damit kann man dann schon recht brauchbare Aktionen durchführen.
Praxisbeispiel
Hier nun wie versprochen mein Beispiel.
Das erste Beispiel ist ein simples Shellscript, das ich unter /usr/local/sbin/backup abgespeichert habe. Der Aufruf erfolgt mittels cron. Dazu führte ich als root crontab -e aus. Alternativ kann man auch in /etc/cron.daily/ ein Script ablegen, die Wirkung bleibt die selbe.
# m h dom mon dow user command 11 1 * * * root /usr/local/bin/backup
Das Backup-Script: ich definiere die Variablen für DKRS (= mein Befehl) und ZIEL (= der Zielort des Backups). Dadurch kann ich bequem zwei Einträge ändern, und mein Script verhält sich komplett anders.
Ersetze ich z.B. /bak/dk10 durch daniel@domain.name:~/pfad/, dann erfolgt die Sicherung auf den entfernnten Rechner namens domain.name als Benutzer daniel in den Dateipfad ~/pfad/.
Anfangs lasse ich Dateien löschen, die als “Leichen” im System herumliegen, bei mir hauptsächlich DEADJOE und *~ Dateien.
'Hinweis: Dieses Backup-Script entspricht meinem Bedarf. Daher solltest du es nicht BLIND übernehmen!
#!/bin/sh DKRS="rsync -avuz --exclude *.deb" ZIEL="/bak/dk10" echo -n "Backupsfiles löschen: " find / -name 'DEADJOE' -print | xargs rm find / -name '*~' -print | xargs rm echo "done." echo "Beginn Sicherung dk10: " dpkg --get-selections > /etc/dpkg/selections.bak echo -n "home: " $DKRS --exclude ftp/ /home/ $ZIEL/home echo "done." for i in boot etc root dev var usr bin sbin lib do echo -n "$i: " $DKRS /$i/ $ZIEL/$i echo "done." done
Der Vorteil in dieser Kombination liegt zum einen im relativ einfachen Code des Scripts, zum anderen in der einfachen Möglichkeit, Befehl und Ziel “auszutauschen”. Weiters werde ich von cron per Email verständigt und erhalte eventuelle Fehlermeldungen.
Nun kommt nfs zum Einsatz:
Als root möchte ich immer Lesezugriff auf das Backup haben. Dazu exportiere ich das Verzeichnis /bak/dk10 auf dem einen Rechner und mounte es auf dem anderen Rechner. Der Eintrag in /etc/fstab:
192.168.0.10:/bak /root/bak nfs auto,ro 0 0
Wie gehts weiter
Weiter gehts so: du schreibst dein eigenes Backupscript, machst regelmäßig Backups (und überprüfst diese) und wirst sie hoffentlich nie brauchen.
Natürlich gibt es auch fertige Backup-Tools für Debian wie Sand am Meer, aus denen man sich eines aussuchen kann. Ein Beispiel ist rdiff-backup, für kleine bis mittlere Installationen ist flexbackup zu empfehlen. Ein weiterers Tool, welches rsync benutzt, ist Dirvish. In der c’t 7/06, Seite 212 gab es einen Artikel darüber.
Wer viel an seiner Konfiguration bastelt oder das System nicht alleine verwaltet - also wirklich viele Änderungen - sollte wohl über ein System zur Versionskontrolle nachdenken. Einfach und leicht verständlich sind rcs und cvs, etwas “moderner” ist subversion.
Quelle
- Dieser Artikel basiert auf einem Beitrag aus dem Debain-Howto; der Originalbeitrag wurde von Daniel Knabl (daniel [at] knabl [dot] com) verfasst und findet sich unter http://www.debianhowto.de/doku.php/de:howtos:sarge:backup_grundlagen.
Netmarks
- HOWTO: Backuplösung mit Backup2l und FTP-Server - Backup-Lösung auf FTP-Server mit backup2l und sitecopy - Anleitung für SuSE 9.1, getestet auf Strato-Server, dürfte aber auch bei 1+1 & Co. funktionieren (RootForum.de)
Ähnliche Beiträge
- Mounten eines FTP-Servers unter Debian GNU/Linux
- Backups unter Debian GNU/Linux mit duplicity und ftplicity
- Erste Debian Mini Konferenz in Deutschland
- IT- und Telekommunikations-Trends 2010
- Abwehr von Schadprogrammen im Web Top-Thema 2010
- Munin
- Upgrade von Etch auf Lenny
- Open Source auf der CeBIT 2009
- Evi Nemeth, Garth Snyder, Trent R. Hein: Linux-Administrations-Handbuch (2009)
- Debian GNU/Linux 5.0 veröffentlicht
- Umzug auf den neuen Strato HighQ-Server MR6
- Installation zusätzlicher Anwendungen auf dem Strato HighQ-Server MR6
- Vorgefundene Konfiguration des Strato HighQ-Servers MR6
- Ausstattung des Strato HighQ-Servers MR6
- Erfahrungsbericht zum HighQ-Server MR6 von Strato unter Debian GNU/Linux





Neueste Kommentare
vor 2 Tage 19 Stunden
vor 1 Woche 3 Tage
vor 16 Wochen 23 Stunden
vor 21 Wochen 23 Stunden
vor 19 Wochen 3 Tage
vor 19 Wochen 3 Tage
vor 19 Wochen 3 Tage
vor 19 Wochen 4 Tage
vor 20 Wochen 21 Sekunden
vor 23 Wochen 1 Tag