[fli4l] Bash /?==?utf-8?Q?Dash

Mike B. mbumen at web.de
Mo Nov 2 19:09:33 CET 2015


Hi Christoph,
das Skript funktioniert nun soweit - insofern ich dass momentan
nach diversen Test's sagen kann. Nochmals Dankeschön für die 
Hilfe!

Anbei das angepaßte Skript im gesamten:


#!/bin/sh
# Script fuer inkrementelles Backup mit 30 taegigem Vollbackup

### Einstellungen ##
BACKUPDIR="datax/backup"           ## Pfad zum Backupverzeichnis
ROTATEDIR="datax/backuprotate"     ## Pfad wo die Backups nach 30 Tagen
konserviert werden
TIMESTAMP="timestamp.dat"          ## Zeitstempel
SOURCE="datax/safedFiles"          ## Verzeichnis(se) welche(s)
gesichert werden soll(en)
DATUM="$(date +%d-%m-%Y)"          ## Datumsformat einstellen
ZEIT="$(date +%H:%M)"              ## Zeitformat einstellen
result_dir="datax/backupresult"    ## Info TXT für bash Ausführung

### Verzeichnisse/Dateien welche nicht gesichert werden sollen ! Achtung
keinen Zeilenumbruch ! ##
EXCLUDE="--exclude=home/user/Filme --exclude=home/user/Musik
--exclude=home/user/Spiele --exclude=home/user/.VirtualBox 
--exclude=home/user/.local/share/Trash"

### Wechsel in root damit die Pfade stimmen ##
cd /

### Statusverzeichnis anlegen ##
mkdir -p ${result_dir}

### Backupverzeichnis anlegen ##
mkdir -p ${BACKUPDIR}

### Test ob Backupverzeichnis existiert und Mail an Admin bei
fehlschlagen ##
if [ ! -d "${BACKUPDIR}" ]; then

cat << EOF > ${result_dir}/NoBackupDir.txt

Hallo Admin,
das Backup am ${DATUM} konnte nicht erstellt werden. Das Verzeichnis
${BACKUPDIR} wurde nicht gefunden und konnte auch nicht angelegt
werden.
Mit freundlichem Gruss Backupscript
EOF

 . exit 1
fi

### Alle Variablen einlesen und letzte Backupdateinummer herausfinden
##
set -- ${BACKUPDIR}/backup-???.tgz
eval lastname=\$\{$#\}
backupnr=${lastname##*backup-}
backupnr=${backupnr%%.*}
backupnr=${backupnr//\?/0}
backupnr=$(echo "$backupnr" | sed 's/^0*//;s/^$/0/')

### Backupdateinummer automatisch um +1 bis maximal 30 erhoehen ##
currentnr=$backupnr
backupnr=$((backupnr+1))
if [ $currentnr -ge 30 ]; then
mkdir -p ${ROTATEDIR}/${DATUM}-${ZEIT}

### Test ob Rotateverzeichnis existiert und Mail an Admin bei
fehlschlagen ##
if [ ! -d "${ROTATEDIR}/${DATUM}-${ZEIT}" ]; then

cat << EOF > ${result_dir}/NoRotadeDir.txt
Hallo Admin,
die alten Backups konnten am ${DATUM} nicht verschoben werden. Das
Verzeichnis ${ROTATEDIR} wurde nicht gefunden und konnte auch nicht
angelegt werden.
Mit freundlichem Gruss Backupscript
EOF

 . exit 1
else
mv ${BACKUPDIR}/* ${ROTATEDIR}/${DATUM}-${ZEIT} 
fi

### Abfragen ob das Backupverschieben erfolgreich war ##
if [ $? -ne 0 ]; then

cat << EOF > ${result_dir}/NoBackupMove.txt
Hallo Admin,
die alten Backups konnte am ${DATUM} nicht verschoben werden.
Mit freundlichem Gruss Backupscript
EOF

exit 1
else

cat << EOF > ${result_dir}/MoveBckOk.txt
Hallo Admin,
die alten Backups wurde am ${DATUM} erfolgreich nach
${ROTATEDIR}/${DATUM}-${ZEIT} verschoben.
Mit freundlichem Gruss Backupscript
EOF

### die Backupnummer wieder auf 1 stellen ##
backupnr=1 
fi 
fi

backupnr=000${backupnr}
len=${#backupnr}
backupnr=${backupnr:$((len-3)):$len}
filename=backup-${backupnr}.tgz

### Nun wird das eigentliche Backup ausgefuehrt ##
tar -cpzf ${BACKUPDIR}/${filename} -g ${BACKUPDIR}/${TIMESTAMP}
${SOURCE} ${EXCLUDE}

### Abfragen ob das Backup erfolgreich war ##
if [ $? -ne 0 ]; then

cat << EOF > ${result_dir}/BackupFailed.txt
Hallo Admin,
das Backup ${filename} am ${DATUM} wurde mit Fehler(n) beendet.
Mit freundlichem Gruss Backupscript
EOF


else

cat << EOF > ${result_dir}/BackupPerfect.txt
Hallo Admin,
das Backup ${filename} am ${DATUM} wurde erfolgreich beendet.
Mit freundlichem Gruss Backupscript
EOF

fi


Mehr Informationen über die Mailingliste Fli4L