Das ganze in eine Text-Datei schreiben (zb. backup_databases.sh), Konfiguration ausfüllen, abspeichern und als "Ausführbar" markieren. Wenn das ganze dann als Cronjob eingetragen wird, braucht man sich wohl keine Sorgen mehr zu machen.
Code: Select all
#! /bin/bash
#######################
#######################
######### config - start
DATE=$(date +%Y-%m-%d);
DIR_WORK1=/PATH-TO-DESTINATION"/"$DATE
DIR_WORK2=/PATH-TO-DESTINATION"/"$DATE"/"databases
USERNAME=USERNAME_FOR_MYSQL
PASSWORD=PASSWORD_FOR_MYSQL
USERNAME_LINUX=USERNAME_IN_LINUX
######### config - end
######################
######################
######### create new dirs in destination
if [ ! -d $DIR_WORK1 ]; then
mkdir $DIR_WORK1;
fi
if [ ! -d $DIR_WORK2 ]; then
mkdir $DIR_WORK2;
fi
######### Make sure the user has write permissions in the destination directory
chown -Rf $USERNAME_LINUX:$USERNAME_LINUX $DIR_WORK1 $DIR_WORK2; fi
######### log in as user into msql
DATABASES=`mysql -u$USERNAME -p$PASSWORD -Bse 'show databases'`
######### backup all databases
for DATABASE in $DATABASES; do
mysqldump -u$USERNAME -p$PASSWORD $DATABASE > $DIR_WORK2"/"${DATABASE}.sql
tar -czf $DIR_WORK2"/"${DATABASE}.tar.gz $DIR_WORK2"/"${DATABASE}.sql
rm $DIR_WORK2"/"${DATABASE}.sql
done
######### write logfile
echo $DATE - Backup of databases executed >> $HOME/backup.log