diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 2eb120b52..694923196 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -21,6 +21,7 @@ servicename="ts3-server" rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" filesdir="${rootdir}/serverfiles" ini="${servicename}.ini" +backupdir="${rootdir}/backups" # Logging logdays="7" @@ -99,6 +100,53 @@ fn_load(){ load=$(uptime | awk -F 'load average' '{ print $2 }') } +fn_backupserver(){ +fn_rootcheck +fn_syscheck +backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" +echo "" +echo "${gamename} Backup" +echo "============================" +echo "" +echo "The following backup will be created." +echo "" +echo "${backupdir}/${backupname}.tar.gz" +echo "" +while true; do + read -p "Continue? [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; return 1 ;; + * ) echo "Please answer yes or no.";; +esac +done + +fn_status +if [ "$ts3status" = "Server is running" ]; then + echo -e "\e[0;31mWARNING!\e[0;39m ${servicename} is currently running" + while true; do + read -p "Would you like to stop ${servicename} while running the backup? [y/N]" yn + case $yn in + [Yy]* ) fn_stopserver;break;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac + done +fi +echo -en "[ .... ] Starting ${servicename}: ${servername} backup" +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +sleep 0.5 +echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +sleep 1 +echo -en "\n" +cd ${rootdir} +mkdir ${backupdir} > /dev/null 2>&1 +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude ${backupdir} ${rootdir} +echo -en "\r${servicename} backup complete" +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +} + fn_emailnotification(){ fn_distro fn_uptime @@ -271,12 +319,14 @@ case "$1" in fn_stopserver;; restart) fn_restartserver;; + backup) + fn_backupserver;; monitor) - fn_monitorserver;; + fn_monitorserver;; email-test) fn_emailtest;; *) - echo "Usage: $0 {start|stop|restart|monitor|email-test}" + echo "Usage: $0 {start|stop|restart|backup|monitor|email-test}" exit 1;; esac exit \ No newline at end of file