Skip to content

Instantly share code, notes, and snippets.

@magujs
Last active September 27, 2016 20:02
Show Gist options
  • Save magujs/250dec07e0339a2162c0280e1d70be85 to your computer and use it in GitHub Desktop.
Save magujs/250dec07e0339a2162c0280e1d70be85 to your computer and use it in GitHub Desktop.
Backup Script
#!/bin/bash
# Script fuer inkrementelles Backup mit 30 taegigem Vollbackup
### Einstellungen ##
BACKUPDIR="home/user/p/test/backup" ## Pfad zum Backupverzeichnis
ROTATEDIR="home/user/p/test/backup/rotate" ## Pfad wo die Backups nach 30 Tagen konserviert werden
TIMESTAMP="timestamp.dat" ## Zeitstempel
SOURCE="home/user/p/test/mackdir" ## Verzeichnis(se) welche(s) gesichert werden soll(en)
DATUM="$(date +%d-%m-%Y)" ## Datumsformat einstellen
ZEIT="$(date +%H:%M)" ## Zeitformat einstellen
### 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"
EXCLUDE=""
### Wechsel in root damit die Pfade stimmen ##
cd /
### Backupverzeichnis anlegen ##
mkdir -p ${BACKUPDIR}
### Test ob Backupverzeichnis existiert und Mail an Admin bei fehlschlagen ##
if [ ! -d "${BACKUPDIR}" ]; then
#mail -s "Backupverzeichnis nicht vorhanden!" root <<EOM
#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
#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 30 erhoehen ##
if [ "$[backupnr++]" -ge 30 ]; 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!" root <<EOM
#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
#EOM
. exit 1
else
mv ${BACKUPDIR}/* ${ROTATEDIR}/${DATUM}-${ZEIT}
fi
### Abfragen ob das Backupverschieben erfolgreich war ##
if [ $? -ne 0 ]; then
#mail -s "Backupverschieben fehlerhaft!" root <<EOM
#Hallo Admin,
#die alten Backups konnte am ${DATUM} nicht verschoben werden.
#Mit freundlichem Gruss Backupscript
#EOM
exit 1
else
#mail -s "Backupverschieben erfolgreich" root <<EOM
#Hallo Admin,
#die alten Backups wurde am ${DATUM} erfolgreich nach ${ROTATEDIR}/${DATUM}-${ZEIT} verschoben.
#Mit freundlichem Gruss Backupscript
#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 -cpzf ${BACKUPDIR}/${filename} -g ${BACKUPDIR}/${TIMESTAMP} ${SOURCE} ${EXCLUDE}
### Abfragen ob das Backup erfolgreich war ##
#if [ $? -ne 0 ]; then
#mail -s "Backup (${SOURCE}) war fehlerhaft!" root <<EOM
#Hallo Admin,
#das Backup ${filename} am ${DATUM} wurde mit Fehler(n) beendet.
#Mit freundlichem Gruss Backupscript
#EOM
#else
#mail -s "Backup (${SOURCE}) war erfolgreich" root <<EOM
#Hallo Admin,
#das Backup ${filename} am ${DATUM} wurde erfolgreich beendet.
#Mit freundlichem Gruss Backupscript
#EOM
#fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment