Datensicherung mit Linux
Write a commentEinrichtung 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
- 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-clientLinux 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
#!/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.
# 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.
You are a guest
or post as a guest
Be the first to comment.