Automatisches Backup von Linux-Konfigurationsdateien mit ZIP und FTP

Insbesondere wer Linux als Server einsetzt, tut gut an einem regelmäßigen Backup der Konfigurationsdateien. Möglich ist das zum Beispiel mit einem Script, das die entsprechenden Dateien in ein ZIP-Archiv kopiert und anschließend auf einen FTP Server lädt. Neben einem FTP Server werden dafür lediglich die Programme zip und ftp benötigt, die unter Debian wie folgt installiert werden:

debian:~# apt-get install zip ftp

Sind die Programme installiert, lässt sich das Backup z.B. mit folgendem Script realisieren:

#!/bin/sh
#
### INFO ###
#
# Zippen der Konfiguration und Upload per FTP
# Usage: /etc/init.d/backup-config
# Author: layer9 at gmx.de
#
### INFO ###

# specify name and location of backup file 
  BACKUPFILE=/opt/backup/$HOSTNAME-backup.zip

# create function
  function backup() {

# specify and move files and directories to zip archive
  zip -u -r $BACKUPFILE /etc/ipsec.conf \
                        /etc/ipsec.secrets \
                        /etc/squid/squid.conf \
                        /root/ssl/*

# upload only if archived has changed and there were no errors
  if [ $? = 0 ];
    then
      # upload compressed backup file to ftp server
        ftp -n -i -v <<-EOF
        open ftp.hostname.de
        user maxmustermann password123
        binary
        put $BACKUPFILE /backup/$HOSTNAME-backup.zip
        quit
      # be careful: no spaces before EOF allowed!
        EOF
     else
       echo "no ftp upload due to error or unchanged archive"
  fi
 }

# call function and print output to syslog
  backup 2>&1 | logger -i -t backup-config

exit 0

Zuerst werden mit der Variable $BACKUPFILE Dateiname und Pfad der zu erzeugenden ZIP-Datei angegeben. Direkt dahinter folgen die Dateien und Verzeichnisse, die dem Archiv hinzugefügt werden sollen. Die Parameter -u und -r bewirken, dass das Archiv nur bei geänderten Quelldateien aktualisiert wird und alle Unterordner und Dateien mit einbezogen werden sollen.

Anschließend wird anhand des Exit-Status geprüft, ob es während der Kompression zu Fehlern kam. Lautet der Status „0“, sind keine Fehler aufgreteten und die Datei wird in das Verzeichnis /backup/ auf den angegebenen FTP-Server geladen. Bei allen anderen Exit Codes wird die Datei nicht hochgeladen – neben Fehlern bei der Kompression ist dies z.B. auch bei einem unveränderten Archiv der Fall. So wird die Datei auf dem FTP-Server nur dann aktualisiert, wenn sich die im Archiv enthaltenen Dateien auch tatsächlich geändert haben. Am Ende des Scripts wird die Funktion aufgerufen und die Ausgabe mittels logger an Syslog weitergeleitet.

Achtung: Vor dem EOF am Ende der Schleife darf sich kein Leerzeichen befinden (TAB funktioniert) – andernfalls kommt es zu folgender Fehlermeldung:

/etc/init.d/backup-config: line 35: syntax error: unexpected end of file

Natürlich lässt sich das Script noch weiter verfeinern, z.B. durch eine Versionierung der Backupdatei oder die Einzelprüfung der Exit Codes. In vielen Fällen wird das aber vermutlich nicht erforderlich sein; ich z.B. lasse das Script per Cronjob einmal täglich laufen und die hochgeladene Datei anschließend auf dem FTP-Server durch die tägliche Bandsicherung sichern – funktioniert prima.

0 Responses to “Automatisches Backup von Linux-Konfigurationsdateien mit ZIP und FTP”



  1. Schreibe einen Kommentar

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s





%d Bloggern gefällt das: