Debian Backup: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
(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...)
 
Keine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:


Optional ist es möglich eine Festplatte, deren Netzteil an der [[Debian_SisPM|→ Schaltbaren Steckdosenleiste]] angeschlossen ist, für das Backup automatisch ein- und danach wieder auszuschalten.  
Optional ist es möglich eine Festplatte, deren Netzteil an der [[Debian_SisPM|→ Schaltbaren Steckdosenleiste]] angeschlossen ist, für das Backup automatisch ein- und danach wieder auszuschalten.  
Desweiteren besteht die Möglichkeit, Remote-Systeme via ssh-Verbindung verschlüsselt zu sichern.


==Voraussetzung==
==Voraussetzung==
* EXT2- oder EXT3- formatierte zusätzliche USB-Festplatte oder USB-Stick.  
* EXT2- oder EXT3- formatierte zusätzliche USB-Festplatte oder USB-Stick.  
* Optional: [[Debian_SisPM|→ Schaltbaren Steckdosenleiste]] zum automatischen ein- und ausschalten der Backup Platte  
* Optional: [[Debian_SisPM|→ Schaltbaren Steckdosenleiste]] zum automatischen ein- und ausschalten der Backup Platte  


==Installation==
==Installation==
Zeile 17: Zeile 20:
  wget ftp://download:download@schiele.homelinux.org/debian/backup.sh
  wget ftp://download:download@schiele.homelinux.org/debian/backup.sh
  chmod +x backup.sh
  chmod +x backup.sh


==Konfiguration==
==Konfiguration==
Zeile 35: Zeile 39:
   
   
  #Verzeichnis, in dem die ganzen Sicherungsdaten liegen
  #Verzeichnis, in dem die ganzen Sicherungsdaten liegen
  BASISDIR=/usr/share/backup
  BASISDIR=/usr/shares/backup
   
   
  #LOGFILE
  #LOGFILE
  LOGFILE=/var/log/backup.log
  LOGFILE=/var/log/backup.log
   
   
  #Zu sicherndes Verzeichnis
  #Zu sicherndes Verzeichnis (Syntax: host:/path)
  ZUSICHERN=/
  ZUSICHERN=localhost:/
#Von der Sicherung auszuschließen
EXCLUDE=( "/dev/*" "/sys*" "/proc/*" "/mnt/*" "/media/*" )
   
   
  #Prefix der Sicherungen  
  #Prefix der Sicherungen  
Zeile 55: Zeile 62:
* Falls die Festplatte nicht permanent ins Dateisystem eingebunden ist, z.B. weil diese nur für das Backup entweder manuell oder automatisch mittels [[Debian_SisPM|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).
* Falls die Festplatte nicht permanent ins Dateisystem eingebunden ist, z.B. weil diese nur für das Backup entweder manuell oder automatisch mittels [[Debian_SisPM|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.
*'''''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 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.
* 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.  
* '''''ZUSICHERN''''' gibt das zu sichernde Verzeichnis im Format '''''Host/Verzeichnisdas''''' an. Sämtliche darunter liegenden Files und Directories werden rekursiv gesichert. '''''ZUSICHERN=localhost:/''''' ergibt ein Vollbackup des Rechners (mit Ausnahme der ausgeschlossenen Files und Directories: siehe '''''EXCLUDE''''').
 
* '''''EXCLUDE''''' enthält eine Auflistung aller auszuschließenden Files und Ordner. Standardmäßig sind dies '''''EXCLUDE'''''=( "/dev/*" "/sys*" "/proc/*" "/mnt/*" "/media/*" ), da diese Ordner Lesefehler beim Backup verursachen würden und beim Rechnerneustart ohnehin automatisch neu erstellt werden (/dev/ , /proc/ , /sys/) bzw. in /mnt/ und /media/ andere Dateisysteme wie z.B. CD-Roms oder USB-Sticks gemounted werden.


* '''''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.
* '''''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.
Zeile 66: Zeile 75:
==Test==
==Test==


{{Rechteck3|'''''Hinweis:'''''
{{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.}}  
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
  /usr/local/bin/backup.sh
==Übergabeparameter==
Neben der direkten Konfiguration des Backupscriptes besteht auch die Möglichkeit, Übergabeparameter zu verwenden. Format:
/usr/local/bin/backup.sh '''''ZUSICHERN BASISDIR ECLUDE1 EXCLUDE2 EXCLUDEn'''''
Parameter '''''ZUSICHERN''''' und '''''BASISDIR''''' siehe Konfigurationsoptionen oben
'''''EXCLUDE1 EXCLUDE2 ... EXCLUDEn''''': Zusätzlich zu den auszuschließenden Files/Directories, die im Script angegeben wurden, können hier beliebig viele weitere angegeben werden.




Zeile 81: Zeile 97:
  0 2 * * 3 root /usr/local/bin/backup.sh > dev/null
  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
==Remotebackup==
Kopie anlegen:
Mit dem vorgestellten Script ist es auch möglich andere Linux-Rechner remote per SSH verschlüsselt zu sichern.
  cp -up backup.sh mailbackup.sh
'''Voraussetzung:''' Auf dem Remote-Rechner ist Linux mit [[Debian_OpenSSH#Erweiterung: Zugang mittels Public Key|OpenSSH mit Public Key]] eingerichtet.
 
'''Auf dem Backupserver (auf dem das Script installiert ist, und auf dem die Backups abgelegt werden):'''
Erstellen des Public Key für das Backup:
  ssh-keygen -t rsa
Die Frage "Enter file in which to save the key" beantworten mit: /root/.ssh/backup
Die beiden Fragen nach der Passphrase mit Enter bestätigen (kein Passwort)


Ändern der Konfiguration, sodass nur noch die Mails gesichert werden:
Übertragen des ssh-key's auf den Remotehost:
vi mailbackup.sh
  ssh-copy-id -i /root/.ssh/backup.pub root@'''''IP_REMOTE'''''
Den beiden Einträge anpassen:
Es wird das root-Passwort des Remotehost (nicht Backupserver) abgefragt, um den Key per SSH verschlüsselt zu übertragen
  ZUSICHERN=/var/spool/cyrus/mail/
PREFIX="mailsicherung"
und evtl. DEL_OLD_BACKUP und KEEP_BACKUP_DAYS anpassen.


Cronjob:
'''Backup:'''
vi /etc/cron.d/backup
Z.B. Backup des /var/ - Verzeichnisses des Remote-Rechners nach Backup: /home/shares/backup/remoteserver/
Eine neue Zeile hinzufügen, sodass das File nun folgendermaßen aussieht:
  /usr/local/bin/backup.sh '''''IP_REMOTE''''':/var/ /home/shares/backup/remoteserver/
  0 2 * * 3 root /usr/local/bin/backup.sh > dev/null
15 1 * * * root /usr/local/bin/mailbackup.sh > dev/null

Aktuelle Version vom 19. Oktober 2009, 22:33 Uhr

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. Desweiteren besteht die Möglichkeit, Remote-Systeme via ssh-Verbindung verschlüsselt zu sichern.


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/shares/backup

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

#Zu sicherndes Verzeichnis (Syntax: host:/path)
ZUSICHERN=localhost:/

#Von der Sicherung auszuschließen
EXCLUDE=( "/dev/*" "/sys*" "/proc/*" "/mnt/*" "/media/*" )

#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 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 zu sichernde Verzeichnis im Format Host/Verzeichnisdas an. Sämtliche darunter liegenden Files und Directories werden rekursiv gesichert. ZUSICHERN=localhost:/ ergibt ein Vollbackup des Rechners (mit Ausnahme der ausgeschlossenen Files und Directories: siehe EXCLUDE).
  • EXCLUDE enthält eine Auflistung aller auszuschließenden Files und Ordner. Standardmäßig sind dies EXCLUDE=( "/dev/*" "/sys*" "/proc/*" "/mnt/*" "/media/*" ), da diese Ordner Lesefehler beim Backup verursachen würden und beim Rechnerneustart ohnehin automatisch neu erstellt werden (/dev/ , /proc/ , /sys/) bzw. in /mnt/ und /media/ andere Dateisysteme wie z.B. CD-Roms oder USB-Sticks gemounted werden.
  • 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

Bulbgraph.png 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


Übergabeparameter

Neben der direkten Konfiguration des Backupscriptes besteht auch die Möglichkeit, Übergabeparameter zu verwenden. Format:

/usr/local/bin/backup.sh ZUSICHERN BASISDIR ECLUDE1 EXCLUDE2 EXCLUDEn

Parameter ZUSICHERN und BASISDIR siehe Konfigurationsoptionen oben EXCLUDE1 EXCLUDE2 ... EXCLUDEn: Zusätzlich zu den auszuschließenden Files/Directories, die im Script angegeben wurden, können hier beliebig viele weitere angegeben werden.


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


Remotebackup

Mit dem vorgestellten Script ist es auch möglich andere Linux-Rechner remote per SSH verschlüsselt zu sichern. Voraussetzung: Auf dem Remote-Rechner ist Linux mit OpenSSH mit Public Key eingerichtet.

Auf dem Backupserver (auf dem das Script installiert ist, und auf dem die Backups abgelegt werden): Erstellen des Public Key für das Backup:

ssh-keygen -t rsa

Die Frage "Enter file in which to save the key" beantworten mit: /root/.ssh/backup Die beiden Fragen nach der Passphrase mit Enter bestätigen (kein Passwort)

Übertragen des ssh-key's auf den Remotehost:

ssh-copy-id -i /root/.ssh/backup.pub root@IP_REMOTE

Es wird das root-Passwort des Remotehost (nicht Backupserver) abgefragt, um den Key per SSH verschlüsselt zu übertragen

Backup: Z.B. Backup des /var/ - Verzeichnisses des Remote-Rechners nach Backup: /home/shares/backup/remoteserver/

/usr/local/bin/backup.sh IP_REMOTE:/var/ /home/shares/backup/remoteserver/