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!

Über uns

Wir sind ein agiles Team von Programmierern und haben uns auf Erweiterungen (extensions) für eine Vielzahl von Systemen spezialisiert. Unsere besondere Stärke ist das entwickeln von Erweiterungen für Shop-Systeme basierend auf dem Magento Framework oder die Entwicklung an Web-Anwendungen mit dem Symfony Framework. Eine weitere Stärke ist die Erweiterung von Content Management Systemen wie beispielsweise Wordpress, Typo3, Drupal und Joomla. Das entwickeln von Apps für Android, Windows und Apple OS Systemen ist selbstverständlich!