Files
Server-MrHossa/SCRIPTS/Database.sh
T
2026-09-10 11:37:59 +02:00

83 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
RED="\e[31m"
GREEN="\e[32m"
YELLOW="\e[33m"
BLUE="\e[34m"
RESET="\e[0m"
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
trap 'log_error "Fehler in Zeile $LINENO"' ERR
if [[ "$EUID" -ne 0 ]]; then
log_error "Script muss als root laufen!"
exit 1
fi
exec 9>/var/lock/docker-control.lock
flock -n 9 || { log_error "Script läuft bereits!"; exit 1; }
export_database() {
log_info "Exportiere DEV"
cp /data/TEMP/Database.sql /data/TEMP/Database-$(date +%Y-%m-%d_%H-%M-%S).sql
echo "Letzten 5 Dateien gelistet:"
du -sh /data/TEMP/Database-* | tail -n 5
mariadb-dump -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z --all-databases > /data/TEMP/Database.sql
log_info "DEV wurde nach DEV.sql exportiert"
}
import_database() {
$timestamp=$(date +%Y%m%d%H%M%S)
log_info "Bereinige alte Datenbank"
mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z -e "DROP DATABASE DEV; CREATE DATABASE DEV;"
log_info "Alte Datenbank bereinigt"
echo ""
log_info "Lese DEV.sql ein"
mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z DEV < /data/TEMP/Database.sql
mv /data/TEMP/Database.sql /data/TEMP/Database-${timestamp}.sql
log_info "DEV-${timestamp}.sql wurde eingelesen"
}
update_tables() {
local timestamp
timestamp=$(date +%Y%m%d%H%M%S)
log_info "Sichere aktuellen Stand von DEV vor Überschreiben"
mariadb-dump -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z --single-transaction DEV \
> /data/TEMP/DEV-backup-${timestamp}.sql
log_info "Synchronisiere Tabellen LIVE -> DEV"
mariadb-dump -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z --verbose --single-transaction --triggers --add-drop-table LIVE \
| mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z DEV
log_success "Tabellen aktualisiert (${timestamp})"
}
ACTION="${1:-}"
case "$ACTION" in
export)
export_database
;;
import)
import_database
;;
update)
update_tables
;;
*)
echo "Usage:"
echo " $0 import"
echo " $0 export"
echo " $0 update"
exit 1
;;
esac