#!/bin/bash if [ "$(whoami)" != "root" ]; then echo "Must be running as root!" exit 1 fi DIR="/root/backup/$(date +%s)" if [ -d "$DIR" ]; then echo "Backup already running!?" exit 1 fi mkdir -p "$DIR" cd "$DIR" || exit 1 mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --add-locks --add-drop-database --default-character-set=utf8 --databases openslx > openslx.sql RET1=$? mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --add-locks --add-drop-database --default-character-set=utf8 --databases sat > sat.sql RET2=$? if [ $RET1 -ne 0 ] || [ $RET2 -ne 0 ]; then echo "Database dump failed with exit code $RET1/$RET2" exit 1 fi FILELIST=" /opt/openslx/configs /etc/lighttpd/server.pem /etc/lighttpd/chain.pem /etc/lighttpd/pub-cert.pem " tar --ignore-failed-read -k -c -p -z -f files.tgz $FILELIST # no quotes here! RET=$? if [ $RET -ne 0 ]; then echo "WARNING: filesystem-tar exited with code $RET - backup might be incomplete!" fi tar -k -c -z -f backup.tgz files.tgz openslx.sql sat.sql RET=$? if [ ! -f backup.tgz ]; then echo "Creating backup.tgz failed!" exit 1 fi if [ $RET -ne 0 ]; then echo "WARNING: final tar exited with code $RET - backup might be incomplete!" fi chown www-data backup.tgz chmod 0600 backup.tgz FILE="/tmp/bwlp-backup-$(date +%s)-${RANDOM}.tgz" if ! mv backup.tgz "$FILE"; then echo "moving backup to $FILE failed." exit 1 fi rm -rf -- /root/backup/1* echo "Location: $FILE" exit 0