commit 6d135e4abe5e5dac09f0f8cb4e5ff00a9fb3a01f Author: Andreas Pfeiffer Date: Thu Jan 15 23:15:53 2015 +0100 Backup tool a little bash script for Webdir’s and MySQL-Db’s diff --git a/backuptool.sh b/backuptool.sh new file mode 100644 index 0000000..90629ca --- /dev/null +++ b/backuptool.sh @@ -0,0 +1,203 @@ +#!/bin/bash +# +# Backup Tool 2.0 +# +# Programm von Netstack GbR written by Andreas Pfeiffer +# +# Dieses Programm wurde für Datenbank backups mehrerer Datenbanken vorgesehen! +# Ab Version 1.2 gibt es auch MYSQL-Checks +# Ab Version 2.0 sind auch Ordnerbackups moeglich +# +################# CONFIG ##################### + +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 +datadir=(/path/to/webdir1 /path/to/webdir2) # Welche Ordner sollen gesichert werden +dbuser=DBUSER # Datenbank User +dbpass=DBPASS # Datenbank Passwort +date1=$(date +%a) # Datumsformat welches an die Dateien angehangen wird +hostname=$(hostname -f) # Hostname +mailsubject="MYSQL-Backup - $hostname" # Mail Betreff +mailtext=/tmp/mailtext.txt # Mailtext zum Versand +email=EMAIL@ADRESSE # Empfaenger der Status Mails +date2=$(date +%A" "%d.%m.%Y) # Datum für E-Mail + +################# CONFIG END ################# + +#Clear mailtext + +echo " " > $mailtext; + +#Aktuelles Datum +echo "#############################################################" >> $mailtext +echo "MYSQL Backup Script from $hostname - "$date2 >> $mailtext +echo "#############################################################" >> $mailtext +echo "" >> $mailtext + +# Check Backupdir +if test -d $backupdir +then + echo ""; +else + echo -n "Create Backupdirectory ... " >> $mailtext + mkdir $backupdir + if test -d $backupdir + then + echo -n "done" >> $mailtext + echo "\n" >> $mailtext + else + echo -n "Error - Cant create backupdirectory" >> $mailtext + exit 1; + 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 + +fi + +# Check Backupdir for files +if test -d $backupdir/files +then + echo ""; +else + echo -n "Create Backupdirectory for files ... " >> $mailtext + mkdir $backupdir/files + if test -d $backupdir/files + then + echo -n "done" >> $mailtext + echo "\n" >> $mailtext + else + echo -n "Error - Cant create backupdirectory for files" >> $mailtext + exit 1; + fi + +fi + +###################### +# Start Files backup # +###################### + +countdir=${#datadir[*]}; + +for (( j=0; j<$countdir; j++ )) +do + #reset Error Variable TODO Error handling + error="0"; + filesdir=${datadir[$j]} + #echo ""; + #make backup from files dir + name=$(basename $filesdir) + echo -n "make backup from $filesdir ..." >> $mailtext + tar -Pczf $backupdir/files/$name'_'$date1.tar.gz $filesdir + if [ $? == "0" ] + then + echo -n " done" >> $mailtext + echo "\n" >> $mailtext + else + echo -n " error" >> $mailtext + echo "\n" >> $mailtext + fi +done + + +###################### +# Start MYSQL Backup # +###################### + +count=${#datenbank[*]}; + +for (( i=0; i<$count; i++ )) +do + #reset Error Variable + dumperror="0"; + + db=${datenbank[$i]} + echo " "; + # Check MYSQL DB + echo "" > /tmp/mysqlcheck + echo -n "Check Mysql Database: \"$db\" ... " >> $mailtext + mysqlcheck -s -u$dbuser -p$dbpass $db >> /tmp/mysqlcheck + + if [ $? == "0" ] + then + mysqlcheck=$(cat /tmp/mysqlcheck) + if [ -n "$mysqlcheck" ]; + then + echo -n " Error -> Details am Ende der Mail" >> $mailtext + echo "" >> $mailtext + else + echo -n " OK" >> $mailtext + echo "" >> $mailtext + fi + else + echo -n " Error " >> $mailtext + echo "" >> $mailtext + fi + + # Dump MYSQL DB + echo -n "create dump for db: \"$db\" ... " >> $mailtext + mysqldump -u$dbuser -p$dbpass --opt $db > $backupdir/mysql/$db'_'$date1.sql + if [ $? == "0" ] + then + echo -n " done " >> $mailtext + sqlfile=$backupdir/$db'_'$date1.sql + echo " " >> $mailtext + else + echo -n " Error " >> $mailtext + dumperror="1"; + echo " " >> $mailtext + fi + + # Gzip MYSQL Dump + 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 + +done + +# Mailversand + +cat $mailtext | mail -s "$mailsubject" $email + +exit 0; diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..aa3456c --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +Backuptool for Linux