Postgres Script hinzugefügt + Standart Target_Directory update

This commit is contained in:
2025-05-24 00:09:17 +02:00
parent a75139d7cc
commit a940bb4668
2 changed files with 89 additions and 2 deletions

View File

@@ -22,8 +22,8 @@ function echo_success() {
} }
# Variablen # Variablen
LOG_FILE="./dump.log" LOG_FILE="./mysql_dump.log"
BACKUP_DIR="./Docker/mysql/Backup/" BACKUP_DIR="./MySQL-Backup/"
FOUND_CONTAINERS=$(docker ps --format "{{.Names}}") FOUND_CONTAINERS=$(docker ps --format "{{.Names}}")
CONTAINERS=$(docker ps --format "{{.Image}} {{.Names}}" | grep "^mysql" | awk '{print $2}') CONTAINERS=$(docker ps --format "{{.Image}} {{.Names}}" | grep "^mysql" | awk '{print $2}')
DATE=$(TZ=Europe/Berlin date +'%Y-%m-%d_%H-%M-%S') DATE=$(TZ=Europe/Berlin date +'%Y-%m-%d_%H-%M-%S')

87
Backup/postgres-dumps.sh Executable file
View File

@@ -0,0 +1,87 @@
#!/bin/bash
# ======== Ausgabe-Funktionen ========
function echo_info() {
echo -e "\e[32m[$(date +'%Y-%m-%d %H:%M:%S')] [INFO] $1\e[0m"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [INFO] $1" >> "$LOG_FILE"
}
function echo_warning() {
echo -e "\e[33m[$(date +'%Y-%m-%d %H:%M:%S')] [WARNUNG] $1\e[0m"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [WARNUNG] $1" >> "$LOG_FILE"
}
function echo_error() {
echo -e "\e[31m[$(date +'%Y-%m-%d %H:%M:%S')] [FEHLER] $1\e[0m"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [FEHLER] $1" >> "$LOG_FILE"
}
function echo_success() {
echo -e "\e[34m[$(date +'%Y-%m-%d %H:%M:%S')] [ERFOLG] $1\e[0m"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [ERFOLG] $1" >> "$LOG_FILE"
}
# ======== Variablen ========
LOG_FILE="./pg_dump.log"
BACKUP_DIR="./PG-Backup/"
DATE=$(TZ=Europe/Berlin date +'%Y-%m-%d_%H-%M-%S')
# ======== Backup-Verzeichnis prüfen ========
echo_info "---------- PostgreSQL Backup gestartet: $DATE ----------"
if [ ! -d "$BACKUP_DIR" ]; then
echo_info "Backup-Verzeichnis $BACKUP_DIR existiert nicht. Erstelle..."
mkdir -p "$BACKUP_DIR"
if [ $? -eq 0 ]; then
echo_success "Verzeichnis $BACKUP_DIR erfolgreich erstellt."
else
echo_error "Fehler beim Erstellen des Backup-Verzeichnisses. Abbruch."
exit 1
fi
fi
# ======== Alle Container prüfen, ob PostgreSQL läuft ========
ALL_CONTAINERS=$(docker ps --format "{{.Names}}")
POSTGRES_CONTAINERS=()
for CONTAINER in $ALL_CONTAINERS; do
if docker exec "$CONTAINER" psql --version >/dev/null 2>&1; then
POSTGRES_CONTAINERS+=("$CONTAINER")
echo_info "PostgreSQL erkannt in Container: $CONTAINER"
fi
done
# ======== Backup jeder Datenbank in jedem Container ========
for CONTAINER in "${POSTGRES_CONTAINERS[@]}"; do
# Passwort holen
POSTGRES_PASSWORD=$(docker exec "$CONTAINER" printenv POSTGRES_PASSWORD)
if [ -z "$POSTGRES_PASSWORD" ]; then
echo_warning "Kein POSTGRES_PASSWORD in $CONTAINER gefunden. Überspringe..."
continue
fi
# Alle Nicht-Systemdatenbanken holen
DATABASES=$(docker exec "$CONTAINER" bash -c "PGPASSWORD=$POSTGRES_PASSWORD psql -U postgres -t -c \"SELECT datname FROM pg_database WHERE datistemplate = false;\"")
for DB in $DATABASES; do
DB=$(echo "$DB" | xargs) # Leerzeichen trimmen
if [ -z "$DB" ]; then
continue
fi
DUMP_FILE="$BACKUP_DIR/${CONTAINER}-${DB}-${DATE}.sql"
echo_info "Erstelle Dump für $DB aus $CONTAINER..."
docker exec "$CONTAINER" bash -c "PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U postgres $DB" > "$DUMP_FILE"
if [ $? -eq 0 ]; then
echo_success "Dump gespeichert: $DUMP_FILE"
else
echo_error "Fehler beim Dump von $DB aus $CONTAINER."
fi
done
done
echo_info "PostgreSQL Backup abgeschlossen."