53 lines
1.6 KiB
Bash
Executable File
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!"
|