Debian Backup

Aus Wiki
Version vom 28. April 2009, 05:48 Uhr von Erich (Diskussion | Beiträge) (Die Seite wurde neu angelegt: ==Einleitung== Hier soll ein komfortables Backup-Script vorgestellt werden, das vollautomatisch regelmäßige Backups anfertigt. Herz des Backup-Scriptes ist rsync (htt...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Einleitung

Hier soll ein komfortables Backup-Script vorgestellt werden, das vollautomatisch regelmäßige Backups anfertigt. Herz des Backup-Scriptes ist rsync (http://de.wikipedia.org/wiki/Rsync). Das Script sichert nicht bei jedem lauf erneut alle Files, sondern nur geänderte bzw. neue Files. Dabei kommt aber nicht ein Vollbackup und weitere Incrementelle Backups zum Einsatz, wie bei vielen anderen Backuplösungen. Vielmehr enthält jedes neu angelegte Backup alle Files. Was zunächst wie ein Widerspruch aussieht, wird durch sog. Hardlinks im Dateisystem möglich.

Optional ist es möglich eine Festplatte, deren Netzteil an der → Schaltbaren Steckdosenleiste angeschlossen ist, für das Backup automatisch ein- und danach wieder auszuschalten.

Voraussetzung

  • EXT2- oder EXT3- formatierte zusätzliche USB-Festplatte oder USB-Stick.
  • Optional: → Schaltbaren Steckdosenleiste zum automatischen ein- und ausschalten der Backup Platte

Installation

Installation von rsync:

apt-get install rsync

Download des Backup-Scripts:

cd /usr/local/bin
wget ftp://download:download@schiele.homelinux.org/debian/backup.sh
chmod +x backup.sh

Konfiguration

Die Konfiguaration des Scriptes erfolgt am Beginn des Files:

vi /usr/local/bin/backup.sh
#-----------------------Konfiguration-------------------
#SIS-PM Schaltbare Steckdosenleiste
SIS_PM_USE=1
SIS_PORT=4

#Automount
AUTO_MOUNT=1

#Destination Device
DEST_DEVICE=/dev/sdc1

#Verzeichnis, in dem die ganzen Sicherungsdaten liegen
BASISDIR=/usr/share/backup

#LOGFILE
LOGFILE=/var/log/backup.log

#Zu sicherndes Verzeichnis
ZUSICHERN=/

#Prefix der Sicherungen 
PREFIX="vollsicherung" 

#Alte Backups löschen:
DEL_OLD_BACKUP=0
KEEP_BACKUP_DAYS=30
#-----------------------------------------------------
  • Falls eine → Schaltbare Steckdosenleiste vorhanden und eigerischtet ist, kann eine daran angesteckte externe USB-Festplatte automatisch vom Script angesteuert werden. Die betreffende Steckdose wird eingeschaltet, die Festplatte gemountet, das Backup durchgeführt und anschließend die Festplatte wieder unmounted und abgeschalten. In diesem Fall wird der Eintrag SIS_PM_USE=1 gesetzt. Mit dem Eintrag SIS_PORT wird die Nummer der Steckdose bestimmt, an dem das Netzteil der USB-Platte hängt.
  • Falls die Festplatte nicht permanent ins Dateisystem eingebunden ist, z.B. weil diese nur für das Backup entweder manuell oder automatisch mittels SISPM eingeschaltet wird, kann die Festplatte für die Dauter des Backups ins Filesystem eingehängt werden. Dies erfolgt, falls der Eintrag AUTO_MOUNT=1 ist. Gemounted wird dabei die Festplatte DEST_DEVICE. Dies ist die Device-Bezeichnung, die die externe USB-Festplatte zugewiesen bekommt, nachdem diese eingeschaltet wurde. Diese Device-Kennung läßt sich relativ einfach herausfinden, indem in einem Putty-Fenster der Befehl "tail -f /var/log/kern.log" eingegeben wird, und die Platte dann an den USB-Port gehängt und eingeschaltet wird. Der Kernel wird die Platte erkennen und dann einige Ausgaben im Puuty-Fenster ausgeben. Diese enthalten unter anderem die Device-Kennung. Ausgabe z.B. "sd 6:0:0:0: [sdc] Write Protect is off" => DEST_DEVICE=dev/sdc1 (erste Partition der Festplatte sdc).
  • BASISDIR bezeichnet das Verzeichnis, unter dem die Backups abgelegt werden. Die mit Hilfe der Einstellung AUTO_MOUNT eingebundene Festplatte, wird in dieses Verzeichnis gemounted, und darauf dann die Backups angelegt. Falls die Ziel-Festplatte permanent im Dateisystem der NSLU verankert ist, hier den entsprechenden Pfand angeben.
  • Nach dem Bakup ist es möglich, alte Backups zu löschen. Dadurch wird das Backup-Archiv nicht unnötig groß. Dies schafft Übersicht und spart Speciherplatz.Mit DEL_OLD_BAKCUP kann das automatische Löschen alter Backups aktiviert (1) oder deaktiviert (0) werden. Mit dem Eintrag KEEP_BACKUP_DAYS wird bestimmt, wieviel Tage lang alte Backups aufbewahrt werden sollen. Z.B. hier 30 Tage lang. Ältere Backups werden gelöscht.
  • ZUSICHERN gibt das Wurzelverzeichnis an, das gesichert wird. Sämtliche darunter liegenden Files und Directories werden rekursiv gesichert. Für ZUSICHERN=/ ergibt ein Vollbackup des Rechners, wobei Verzeichnisse wie /dev , /sys und /proc nicht gesichert werden, da rsync bei diesen nur Lesefehler erzeugen würde.
  • PREFIX bestimmt den Namen der Backups. Die Backups werden nach folgendem Schema benannt: PREFIX-Datum_Zeit. Z.B. für PREFIX=vollsicherung: vollsicherung-2009-04-23_02:00 für ein Backup am 23.04.2009 um 2:00 Uhr.


Test

Hinweis: Beim ersten Start des Backup-Scriptes kann es sehr lange dauern, bis dieses fertiggestellt ist. Dies liegt daran, dass rsync beim ersten Start, sämtliche Files kopieren muß. Bei den folgenden Backup-Läufen werden nur noch geänderte bzw. neue Files übertragen, so dass diese dann schneller durchlaufen. Während das Backup läuft, darf das Putty-Fenster nicht geschlossen werden, da ansonsten das Backup abgebrochen wird.
/usr/local/bin/backup.sh


Optional: Regelmäßiges Backup

Um das Backups regelmäßig durchzuführen, wird ein Cron-Job eingerichtet. Dies macht natürlich nur Sinn, wenn die Zielfestplatte entweder permanent im Dateisystem verankert ist, oder die Festplatte automatisch mittels Debian_SisPM eingeschaltet wird.

vi /etc/cron.d/backup

Einen neuen Eintrag erzeugen, z.B. für ein wöchentliches Backup am Mittwoch (=Wochentag 3) um 2.00 Uhr nachts.

0 2 * * 3 root /usr/local/bin/backup.sh > dev/null

Ideen

Es können auch mehrere Backup-Scripte verwendet werden. Z.B. eines um wöchentlich ein Vollbackup zu erstellen und täglich nur die Mailserver-Files zu sichern (Nachts um 1:15 Uhr). Dies kann erreicht werden, indem eine Kopie des Backupscripts angelegt wird, dieses entsprechend konfiguriert wird, und der Cronjob erweitert wird.

cd /usr/local/bin

Kopie anlegen:

cp -up backup.sh mailbackup.sh

Ändern der Konfiguration, sodass nur noch die Mails gesichert werden:

vi mailbackup.sh

Den beiden Einträge anpassen:

ZUSICHERN=/var/spool/cyrus/mail/
PREFIX="mailsicherung"

und evtl. DEL_OLD_BACKUP und KEEP_BACKUP_DAYS anpassen.

Cronjob:

vi /etc/cron.d/backup

Eine neue Zeile hinzufügen, sodass das File nun folgendermaßen aussieht:

0 2 * * 3 root /usr/local/bin/backup.sh > dev/null
15 1 * * * root /usr/local/bin/mailbackup.sh > dev/null