Selbst gemachte Datensicherung
Implementiere eine inkrementelle Datensicherung von Linux zu einem NAS (Network Attached Storage) unter Verwendung von Cron, Tar und Gzip. Dies stellt eine unkomplizierte Strategie dar, die leicht mit den in den meisten Linux-Distributionen enthaltenen Standard-Tools umgesetzt werden kann.

Voraussetzungen

Wir gehen davon aus, dass ein funktionsfähiges Li1nux 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<br><br>

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><br><br>

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!