Files
backup-scripts/backup-postgresql.sh
2026-04-27 17:45:35 +02:00

53 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
source /home/nico/backup/lib.sh
# ================================
# Einstellungen
# ================================
CONTAINER="postgresql" # Name deines PostgreSQL-Docker-Containers
DB_USER="nico" # PostgreSQL-User
BACKUP_DIR="/home/nico/backup/tmp/postgresql_backups" # Temporärer Backup-Pfad auf dem Server
REMOTE="onedrive-tdhaider:/IONOS/Backups" # Basisziel auf OneDrive
DATE=$(date +%F_%H-%M-%S)
# ================================
# Backup-Ordner vorbereiten
# ================================
mkdir -p "$BACKUP_DIR"
# ================================
# Funktion: Backup einer DB
# ================================
backup_db() {
local DB_NAME=$1
local FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"
log "📦 Backup starte für Datenbank: $DB_NAME ..."
docker exec -t "$CONTAINER" pg_dump -U "$DB_USER" "$DB_NAME" | gzip > "$FILE" \
|| fail "Fehler beim Backup von $DB_NAME"
# Upload in eigenen Unterordner
log "☁️ Lade $DB_NAME Backup zu OneDrive hoch ..."
upload "$FILE" "$REMOTE/postgresql_$DB_NAME"
log "✅ Upload abgeschlossen!"
cleanup_keep_latest "$REMOTE/postgresql_$DB_NAME" 30
log "✅ Cleanup abgeschlossen!"
}
# ================================
# Datenbanken sichern und hochladen
# ================================
backup_db "gitea"
backup_db "projektverwaltung"
# ================================
# Lokale Backups aufräumen (optional)
# ================================
[[ -d "$BACKUP_DIR" ]] && rm -rf "$BACKUP_DIR"
log "🧹 Lokale temporäre Backups gelöscht."
log "🏁 Alle Backups abgeschlossen!"