Backup-Skript für SQL Datenbanken

ein Beispielscript zur täglichen Sicherung von SQL Datenbanken. In diesem Fall hauptsächlich zur Sicherung von NEXTCLOUD.

#!/bin/sh
#vars
TIME="$(date +%d.%b_%H-%M-%S)"
LOG="/root/scripts/log/$TIME-sqlbak.log"
BACKUPDIR="/BAK/mysql-bak"
TO="Die-EMAIL-ADRESSE-an-die-log-gesendet-werden-soll"
USERNAME=root
mkdir -p $BACKUPDIR 2>/dev/null

#functions
#maintenance NEXTCLOUD
occ-on()
{
   sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
}
occ-off()
{
   sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
}
#Mail function
logmail()
{
    echo "Subject: tägliches SQL Backup" >> $LOG
    echo "Content-Type: text/plain; charset="utf-8"" >> $LOG
    HDD="$(df -h)"; echo -e "\n \n$HDD \n" >> $LOG
    echo "Um $TIME wurde das SQL Backup gemacht: $FLIST" >> $LOG
    /usr/sbin/sendmail -bm $TO < $LOG
}
    
cd $BACKUPDIR
occ-on
for DATABASE in nextcloud mysql rainloop wordpressdb; do
       mysqldump -u$USERNAME $DATABASE > ${DATABASE}-$(date +%F_%H%M).sql
done
occ-off

FLIST=$(ls -l $BACKUPDIR)
logmail

# Alte Backups löschen
find /BAK/mysql-bak -type f -mtime +20 -exec rm -f {} \;
find /root/scripts/log/ -maxdepth 1 -type f -mtime +40 -exec rm -f {} \;