code tidied up

This commit is contained in:
2024-06-25 09:12:36 +02:00
parent 53ff4e579c
commit 66ffcb7054

View File

@@ -10,198 +10,173 @@
# #
################# CONFIG ##################### ################# CONFIG #####################
backupdir=/data/backup # Verzeichniss wo die Backups abgelegt werden, es werden automatisch unterordner "mysql" und "files" erstellt. backupdir=/data/backup # Verzeichniss wo die Backups abgelegt werden, es werden automatisch unterordner "mysql" und "files" erstellt.
datenbank=(dbname dbnam2) # Datenbanken welche gesichert werden sollen datenbank=(dbname dbnam2) # Datenbanken welche gesichert werden sollen
datadir=(/path/to/webdir1 /path/to/webdir2) # Welche Ordner sollen gesichert werden datadir=(/path/to/webdir1 /path/to/webdir2) # Welche Ordner sollen gesichert werden
dbuser=DBUSER # Datenbank User dbuser=DBUSER # Datenbank User
dbpass=DBPASS # Datenbank Passwort dbpass=DBPASS # Datenbank Passwort
date1=$(date +%a) # Datumsformat welches an die Dateien angehangen wird date1=$(date +%a) # Datumsformat welches an die Dateien angehangen wird
hostname=$(hostname -f) # Hostname hostname=$(hostname -f) # Hostname
mailsubject="MYSQL-Backup - $hostname" # Mail Betreff mailsubject="MYSQL-Backup - $hostname" # Mail Betreff
mailtext=/tmp/mailtext.txt # Mailtext zum Versand mailtext=/tmp/mailtext.txt # Mailtext zum Versand
email=EMAIL@ADRESSE # Empfaenger der Status Mails email=EMAIL@ADRESSE # Empfaenger der Status Mails
date2=$(date +%A" "%d.%m.%Y) # Datum für E-Mail date2=$(date +%A" "%d.%m.%Y) # Datum für E-Mail
################# CONFIG END ################# ################# CONFIG END #################
#Clear mailtext # Set PATH
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Clear mailtext
echo " " > $mailtext; echo " " > $mailtext;
#Aktuelles Datum # Aktuelles Datum
echo "#############################################################" >> $mailtext echo "#############################################################" >> $mailtext
echo "MYSQL Backup Script from $hostname - "$date2 >> $mailtext echo "MYSQL Backup Script from $hostname - "$date2 >> $mailtext
echo "#############################################################" >> $mailtext echo "#############################################################" >> $mailtext
echo "" >> $mailtext echo "" >> $mailtext
# Check Backupdir # Check Backupdir
if test -d $backupdir if test -d $backupdir; then
then echo "";
echo "";
else else
echo -n "Create Backupdirectory ... " >> $mailtext echo -n "Create Backupdirectory ... " >> $mailtext
mkdir $backupdir mkdir -p $backupdir
if test -d $backupdir if test -d $backupdir; then
then echo "done" >> $mailtext
echo -n "done" >> $mailtext echo "" >> $mailtext
echo "\n" >> $mailtext else
else echo "Error - Can't create backup directory" >> $mailtext
echo -n "Error - Cant create backupdirectory" >> $mailtext exit 1;
exit 1; fi
fi
fi fi
# Check Backupdir for mysql
if test -d $backupdir/mysql
then
echo "";
else
echo -n "Create Backupdirectory for mysql ... " >> $mailtext
mkdir $backupdir/mysql
if test -d $backupdir/mysql
then
echo -n "done" >> $mailtext
echo "\n" >> $mailtext
else
echo -n "Error - Cant create backupdirectory for mysql" >> $mailtext
exit 1;
fi
# Check Backupdir for mysql
if test -d $backupdir/mysql; then
echo "";
else
echo -n "Create Backupdirectory for mysql ... " >> $mailtext
mkdir -p $backupdir/mysql
if test -d $backupdir/mysql; then
echo "done" >> $mailtext
echo "" >> $mailtext
else
echo "Error - Can't create backup directory for mysql" >> $mailtext
exit 1;
fi
fi fi
# Check Backupdir for files # Check Backupdir for files
if test -d $backupdir/files if test -d $backupdir/files; then
then echo "";
echo "";
else else
echo -n "Create Backupdirectory for files ... " >> $mailtext echo -n "Create Backupdirectory for files ... " >> $mailtext
mkdir $backupdir/files mkdir -p $backupdir/files
if test -d $backupdir/files if test -d $backupdir/files; then
then echo "done" >> $mailtext
echo -n "done" >> $mailtext echo "" >> $mailtext
echo "\n" >> $mailtext else
else echo "Error - Can't create backup directory for files" >> $mailtext
echo -n "Error - Cant create backupdirectory for files" >> $mailtext exit 1;
exit 1; fi
fi
fi fi
###################### ######################
# Start Files backup # # Start Files backup #
###################### ######################
#count datadir's from config # count datadir's from config
countdir=${#datadir[*]}; countdir=${#datadir[*]}
for (( j=0; j<$countdir; j++ )) for (( j=0; j<$countdir; j++ )); do
do # reset Error Variable TODO Error handling
#reset Error Variable TODO Error handling error="0"
error="0"; filesdir=${datadir[$j]}
filesdir=${datadir[$j]} # make backup from files dir
#echo ""; name=$(basename $filesdir)
#make backup from files dir echo -n "make backup from $filesdir ..." >> $mailtext
name=$(basename $filesdir) tar -Pczf $backupdir/files/$name'_'$date1.tar.gz $filesdir
echo -n "make backup from $filesdir ..." >> $mailtext if [ $? -eq 0 ]; then
tar -Pczf $backupdir/files/$name'_'$date1.tar.gz $filesdir echo "done" >> $mailtext
if [ $? == "0" ] echo "" >> $mailtext
then else
echo -n " done" >> $mailtext echo "error" >> $mailtext
echo "\n" >> $mailtext echo "" >> $mailtext
else fi
echo -n " error" >> $mailtext
echo "\n" >> $mailtext
fi
done done
###################### ######################
# Start MYSQL Backup # # Start MYSQL Backup #
###################### ######################
#clear mysql checkfile # clear mysql checkfile
echo "" > /tmp/mysqlcheck echo "" > /tmp/mysqlcheck
#count databaeses from config # count databases from config
count=${#datenbank[*]}; count=${#datenbank[*]}
for (( i=0; i<$count; i++ )) for (( i=0; i<$count; i++ )); do
do # reset Error Variable
#reset Error Variable dumperror="0"
dumperror="0"; db=${datenbank[$i]}
# Check MYSQL DB
echo -n "Check Mysql Database: \"$db\" ... " >> $mailtext
mysqlcheck -s -u$dbuser -p$dbpass $db >> /tmp/mysqlcheck
db=${datenbank[$i]} if [ $? -eq 0 ]; then
echo " "; mysqlcheck=$(cat /tmp/mysqlcheck)
# Check MYSQL DB if [ -n "$mysqlcheck" ]; then
echo -n "Check Mysql Database: \"$db\" ... " >> $mailtext echo "Error -> Details am Ende der Mail" >> $mailtext
mysqlcheck -s -u$dbuser -p$dbpass $db >> /tmp/mysqlcheck echo "" >> $mailtext
else
echo "OK" >> $mailtext
echo "" >> $mailtext
fi
else
echo "Error" >> $mailtext
echo "" >> $mailtext
fi
if [ $? == "0" ] # Dump MYSQL DB
then echo -n "create dump for db: \"$db\" ... " >> $mailtext
mysqlcheck=$(cat /tmp/mysqlcheck) mysqldump -u$dbuser -p$dbpass --opt $db > $backupdir/mysql/$db'_'$date1.sql
if [ -n "$mysqlcheck" ]; if [ $? -eq 0 ]; then
then echo "done" >> $mailtext
echo -n " Error -> Details am Ende der Mail" >> $mailtext sqlfile=$backupdir/mysql/$db'_'$date1.sql
echo "" >> $mailtext echo "" >> $mailtext
else else
echo -n " OK" >> $mailtext echo "Error" >> $mailtext
echo "" >> $mailtext dumperror="1"
fi echo "" >> $mailtext
else fi
echo -n " Error " >> $mailtext
echo "" >> $mailtext
fi
# Dump MYSQL DB # Gzip MYSQL Dump
echo -n "create dump for db: \"$db\" ... " >> $mailtext echo -n "gzip dump for db: \"$db\" ... " >> $mailtext
mysqldump -u$dbuser -p$dbpass --opt $db > $backupdir/mysql/$db'_'$date1.sql if [ $dumperror -eq 0 ]; then
if [ $? == "0" ] gzip -f -9 $sqlfile
then if [ $? -eq 0 ]; then
echo -n " done " >> $mailtext echo "done" >> $mailtext
sqlfile=$backupdir/mysql/$db'_'$date1.sql echo "" >> $mailtext
echo " " >> $mailtext else
else echo "Error" >> $mailtext
echo -n " Error " >> $mailtext echo "" >> $mailtext
dumperror="1"; fi
echo " " >> $mailtext else
fi echo "Error" >> $mailtext
echo "" >> $mailtext
# Gzip MYSQL Dump fi
echo -n "gzip dump for db: \"$db\" ... " >> $mailtext
if [ $dumperror == "0" ]
then
gzip -f -9 $sqlfile
if [ $? == "0" ]
then
echo -n " done " >> $mailtext
echo " " >> $mailtext
else
echo -n " Error " >> $mailtext
echo " " >> $mailtext
fi
else
echo -n " Error " >> $mailtext
echo " " >> $mailtext
fi
if [ -n "$mysqlcheck" ];
then
echo " " >> $mailtext
echo "##############################################################" >> $mailtext
echo "Mysql Check Details: " >> $mailtext
echo "##############################################################" >> $mailtext
echo "" >> $mailtext
cat /tmp/mysqlcheck >> $mailtext
fi
if [ -n "$mysqlcheck" ]; then
echo "" >> $mailtext
echo "##############################################################" >> $mailtext
echo "Mysql Check Details: " >> $mailtext
echo "##############################################################" >> $mailtext
echo "" >> $mailtext
cat /tmp/mysqlcheck >> $mailtext
fi
done done
# Mailversand # Mailversand
cat $mailtext | mail -s "$mailsubject" $email cat $mailtext | mail -s "$mailsubject" $email
exit 0; exit 0