Skip to content

Instantly share code, notes, and snippets.

@Sentences
Created March 8, 2017 13:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sentences/433cc2eb3d14755f70be3b77f1226359 to your computer and use it in GitHub Desktop.
Save Sentences/433cc2eb3d14755f70be3b77f1226359 to your computer and use it in GitHub Desktop.
Database Backup Shell-Script
#!/bin/bash
# Nico Renken
# 2017
# Datenbanken
declare -a hosts=("127.0.0.2" "127.0.0.3" )
declare -a dbs=("db_12345" "db_54321" )
declare -a users=("u_12345" "u_54321" )
declare -a pass=("secure" "moresecure" )
# Verzeichnis zum Sichern
Backupdir="/home/users/alfed/dbBackups"
# Taegliche Sicherungen nach X Tagen loeschen
DeleteOlderThanDays=10
# Wochentliche Sicherungen nach X Tagen loeschen
WeeklyDeleteOlderThanDays=60
# Monatliche Sicherungen nach X Tagen loeschen
MonthlyDeleteOlderThanDays=365
DeleteMask=db*.sql.gz
##################################################################
current_month_day=`date +"%d"`
current_week_day=`date +"%u"`
##################################################################
############################ Sichern #############################
##################################################################
typeset -i i=0 max=${#hosts[*]}
while (( i < max ))
do
echo "Sicherung: ${hosts[$i]} DB: ${dbs[$i]}"
FILE=${Backupdir}/${dbs[$i]}.`date +"%Y%m%d"`.sql
## Falls vorhanden, dateileichen l�schen
rm ${FILE} 2> /dev/null
rm ${FILE}.gz 2> /dev/null
/usr/bin/mysqldump ${dbs[$i]} --routines --quick --host=${hosts[$i]} --user=${users[$i]} --password=${pass[$i]} > ${FILE}
gzip ${FILE}
echo "${dbs[$i]} gesichert"
i=i+1
# monatliches Backup immer am 1.
if [ "${current_month_day}" -eq 1 ] ; then
cp ${FILE}.gz ${Backupdir}/monthly
fi
# Sonntags das Weekly Backup
if [ "${current_week_day}" -eq 7 ] ; then
cp ${FILE}.gz ${Backupdir}/weekly
fi
done
##################################################################
#################### Alte Sicherungen loeschen ###################
##################################################################
find ${Backupdir} -maxdepth 1 -mtime +${DeleteOlderThanDays} -iname ${DeleteMask} -delete
find ${Backupdir}/weekly -maxdepth 1 -mtime +${WeeklyDeleteOlderThanDays} -iname ${DeleteMask} -delete
find ${Backupdir}/monthly -maxdepth 1 -mtime +${MonthlyDeleteOlderThanDays} -iname ${DeleteMask} -delete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment