| FOTO | AUTO | EDV | AUDIO |

Einrichten

Dieses Backupscript erstellt ein Grundbackup und eine tägliche Sicherung der geänderten Daten. Dazu bedient es sich des Programmes tar und des Dienstes anacron. Der Dienst anacron sorgt dafür, dass immer ein Backup nach dem ersten Rechnereinschalten des Tages gemacht wird. Somit ist sichergestellt, das nicht vergessen wird ein Backup anzulegen bzw. dass ein Backup nicht angelegt wird, weil die Ausführungszeit vor Einschalten des Rechners liegt, was z.B. der Fall bei cron wäre. Nach jedem Backupvorgang wird eine Mail an root gesendet, in der mitgeteilt wird ob das Backup von Erfolg gekrönt war oder ob ein Fehler aufgetreten ist.

  • Das Backup-Script in /etc/dron.daily/ erstellen und ausführbar machen
    • Dieses Script erstellt ein Full Backup und 30 Tage lang inkrementelle Backups
  • Den Ort /mnt/Backup bereit stelleln (USB Platte)

Damit arbeiten

Ein Backup erstellen

Es wird automatisch ein tägliches Backup erstellt.

Eine Datei suchen

Sucht Datei in allen Archiven (dauert sehr lange)

BACKUPDIR=media/backup
ls -l ${BACKUPDIR}
for archiv in ${BACKUPDIR}/backup-*.tgz; do
tar -tzf $archiv -C / | grep Name_der_Datei;
done 
Sucht in einem bestimmten Archiv (hier backup-003.tgz)
tar -tzf backup-003.tgz | grep Name_der_Datei

Eine Datei zurück spielen

for archiv in ${BACKUPDIR}/backup-*.tgz; do
tar -xzf $archiv -C /   home/user/pfad/zur/datei/Name_der_Datei
done 

Alle Dateien zurück spielen

Alle ersetzen und Originale Überschreiben

BACKUPDIR=/media/backup   # Pfad zum Backupverzeichnis
for archiv in ${BACKUPDIR}/backup-*.tgz; do
tar -xzf $archiv -C /
done 

Das Script

Das Backup Script für den User andre:

#!/bin/bash
 
#===================================================================
# Script fuer inkrementelles Backup mit $ROTATE taegigem Vollbackup
# Version 1.0
#===================================================================
 
### Einstellungen ##
BACKUPDIR="mnt/Backup/andre"            # Pfad zum Backupverzeichnis
ROTATEDIR="mnt/Backup/rotate/andre"     # Pfad wo die Backups nach 30 Tagen konserviert werden
TIMESTAMP="timestamp.dat"               # Zeitstempel
SOURCE="home/andre"                     # Verzeichnis(se) welche(s) gesichert werden soll(en)
MAILTO="andre@creutz.net"               # zu benachrichtigende Mailadresse
USER="Andre"                            # Username in der Mail
EXCLUDE="--exclude=home/andre/.*"       # Verzeichnisse/Dateien welche nicht gesichert werden sollen ! Achtung keinen Zeilenumbruch !
ROTATE="30"                             # Rotationstage
 
###   Ab hier nichts mehr aendern
DATUM="$(date +%d-%m-%Y)"               # Datumsformat einstellen
ZEIT="$(date +%H:%M)"                   # Zeitformat einstellen
cd /                                    # Wechsel in root damit die Pfade stimmen
mkdir -p ${BACKUPDIR}                   # Backupverzeichnis anlegen
if [ ! -d "${BACKUPDIR}" ]; then        # Test ob Backupverzeichnis existiert
 
mail -s "Backupverzeichnis nicht vorhanden!" $MAILTO <<EOM
Hallo $USER,
das Backup am ${DATUM} konnte nicht erstellt werden. Das Verzeichnis ${BACKUPDIR} wurde nicht gefunden und konnte auch nicht angelegt werden.
EOM
 
 . exit 1
fi
 
### Alle Variablen einlesen und letzte Backupdateinummer herausfinden ##
set -- ${BACKUPDIR}/backup-???.tgz
lastname=${!#}
backupnr=${lastname##*backup-}
backupnr=${backupnr%%.*}
backupnr=${backupnr//\?/0}
backupnr=$[10#${backupnr}]
 
### Backupdateinummer automatisch um +1 bis maximal $ROTATE erhoehen ##
if [ "$[backupnr++]" -ge $ROTATE ]; then
mkdir -p ${ROTATEDIR}/${DATUM}-${ZEIT}
### Test ob Rotateverzeichnis existiert und Mail an Admin bei fehlschlagen ##
if [ ! -d "${ROTATEDIR}/${DATUM}-${ZEIT}" ]; then
 
mail -s "Rotateverzeichnis nicht vorhanden!" $MAILTO <<EOM
Hallo $USER,
die alten Backups konnten am ${DATUM} nicht verschoben werden. Das Verzeichnis ${ROTATEDIR} wurde nicht gefunden und konnte auch nicht angelegt werden.
EOM
 
 . exit 1
else
mv ${BACKUPDIR}/* ${ROTATEDIR}/${DATUM}-${ZEIT}
fi
 
### Abfragen ob das Backupverschieben erfolgreich war ##
if [ $? -ne 0 ]; then
 
mail -s "Backupverschieben fehlerhaft!" $MAILTO <<EOM
Hallo $USER,
die alten Backups konnte am ${DATUM} nicht verschoben werden.
EOM
 
exit 1
else
 
mail -s "Backupverschieben erfolgreich" $MAILTO <<EOM
Hallo $USER,
die alten Backups wurde am ${DATUM} erfolgreich nach ${ROTATEDIR}/${DATUM}-${ZEIT} verschoben.
EOM
 
### die Backupnummer wieder auf 1 stellen ##
backupnr=1
fi
fi
 
backupnr=000${backupnr}
backupnr=${backupnr: -3}
filename=backup-${backupnr}.tgz
 
### Nun wird das eigentliche Backup ausgefuehrt ##
tar -czf ${BACKUPDIR}/${filename} -g ${BACKUPDIR}/${TIMESTAMP} ${SOURCE} ${EXCLUDE}
 
### Abfragen ob das Backup erfolgreich war ##
if [ $? -ne 0 ]; then
 
mail -s "Backup (${SOURCE}) war fehlerhaft!" $MAILTO <<EOM
Hallo $USER,
das Backup ${filename} am ${DATUM} wurde mit Fehler(n) beendet.
EOM
 
else
 
mail -s "Backup (${SOURCE}) war erfolgreich" $MAILTO <<EOM
Hallo $USER,
das Backup ${filename} am ${DATUM} wurde erfolgreich beendet.
EOM
 
fi

Im Internet: http://wiki.ubuntuusers.de/Skripte/inkrementelles_Backup