WebBuilder von Host Europe

Datensicherung mit Linux

Selbst gemachte Datensicherung
Einrichtung einer inkrementellen Datensicherung von Linux auf einen NAS (Network Attached Storage) mit Cron, Tar und Gzip. Einfache Lösung mit Standard-Boardmitteln der meisten Linux-Distributionen.


Voraussetzungen

Wir gehen davon aus, dass ein funktionsfähiges Linux Betriebssystem vorhanden ist.
  • Linux Betriebssystem
  • die Pakete gzip und cron müssen installiert sein.
  • für das Mounten von Windows Freigaben das Paket smbclient.


apt-get install gzip cron samba-client

Linux bietet die Möglichkeit mittels CIFS Windows Netzwerkfreigaben einzubinden. Zumindest für Betriebssystem unabhängige Daten ist dies eine Möglichkeit um die Daten einfach zu sichern.
 
Beispiel: Manuelles mounten einer Windows Freigabe:


mount.cifs <remotetarget> <dir> -o <options>

 

Um die Einbindung der Windows Freigabe permanent verfügbar zu machen, muss diese in die Datei /etc/fstab eingetragen werden.
# /etc/fstab
...
# windows netzwerkfreigabe mounten
//rechner/freigabe     /mnt/win      cifs      username=win,password=pass,rw,umask=0700    0    0



Das Datensicherungsskript

Als nächstes muss ein Datensicherungsskript geschrieben werden. Am besten im Pfad ablegen. Z.B. in /usr/local/sbin.

Name des Skripts: sichern.sh

#!/bin/bash
#
# Sicherungsskript: sichern.sh
#
# Aufruf Parameter
# sichern.sh mo fuer Sicherung Montag
# sichern.sh okt fuer Monatssicherung Oktober
 
# Parameter pruefen
if ! test $1 ; then
   echo "aufruf: sichern.sh <wochentag oder monat>"
   echo "Beispiel: sichern.sh mo"
   exit 1
fi
 
# Mountpoints
NASMOUNT=/mnt/nas/backup
NASCHECK=NASDisk 
LOGFILE=/var/log/sicherung.log
 
# Tag oder Monatsname der Sicherung (mo,di,mi,do,fr,sa,so)
TAG=$1
 
# starte backup
doBackup() { 
    # Start Zeitstempel der Sicherung protokollieren
    echo "Start: `date`" >>  $LOGFILE
 
    # Beginn der Sicherung
    # 1. Windows /mnt/win sichern
    SAVEPATH="/mnt/win/"
    OUTNAME="daten"
    tar czf $NASMOUNT/$TAG.$OUTNAME.tgz $SAVEPATH
 
    # 2. /home sichern
    SAVEPATH="/home/"
    OUTNAME="linux-home"
    tar czf $NASMOUNT/$TAG.$OUTNAME.tgz $SAVEPATH
 
    # 3. /etc sichern
    SAVEPATH="/etc/"
    OUTNAME="etc"
    tar czf $NASMOUNT/$TAG.$OUTNAME.tgz $SAVEPATH
 
    # .... und was sonst noch wichtig ist!
 
    # Ende Zeitstempel
    echo "Ende: `date`" >> $LOGFILE
 
    # logfile fuer kontrolle kopieren
    cp -f $LOGFILE $NASMOUNT
    chmod a+r $NASMOUNT/sicherung.log

}
 
 
# pruefen ob nas gemountet ist
if grep $NASCHECK /proc/mounts > /dev/null ; then
 
    # check for backup folder
    if [ ! -d $NASMOUNT ]; then
        mkdir $NASMOUNT
    fi

    # start backup
    doBackup
else
    echo "Nas is not available!"
    exit 1;
fi

 


cron job

Abschließend muss jetzt noch ein cron job angelegt werden, der die Sicherung regelmäßig startet.

Da die Sicherung einen Parameter erwartet, verwenden wir die Formatierungsanweisung %a (Tag) bzw. %b (Monat) des date Kommandos. Das %-Zeichen muss bei der Verwendung innerhalb von Crontab allerdings noch mittels Backslash (\) escaped werden.

Beispiel: Cronjob in /etc/crontab

# Datensicherung täglich Nachts um 1:00 Uhr
0 1 * * * root /usr/local/sbin/sichern.sh `date +\%a`
 
# Datensicherung 1 x pro Monat immer am 1. um 3 Uhr
0 3 1 * * root /usr/local/sbin/sichern.sh `date +\%b`



Jetzt sollten täglich Sicherungsdateien erzeugt werden die im Dateinamen den Wochentag, bzw. den Monatsnamen enthalten.

Viel Erfolg!

Kommentar hinzufügen

Dein Name:
Betreff:
Kommentar: