backup new websites

This commit is contained in:
Nico Haider
2026-05-03 00:38:06 +02:00
parent 9ad9480e0b
commit 9d8f1a1fc9
2 changed files with 150 additions and 0 deletions
+99
View File
@@ -0,0 +1,99 @@
#!/bin/bash
set -euo pipefail
source /home/nico/backup/lib.sh
# ================================
# Grundeinstellungen
# ================================
WEBSITES_BASE="/home/nico/docker-setup/websites"
BACKUP_DIR="/home/nico/backup/tmp/websites_backups"
REMOTE="onedrive-tdhaider:/IONOS/Backups/websites"
DATE=$(date +%F_%H-%M-%S)
RUN_DIR="$BACKUP_DIR/$DATE"
mkdir -p "$RUN_DIR"
log "🚀 Starte Website Media-Backup"
log "📅 Backup-Zeitpunkt: $DATE"
log "========================================="
FAILED_SITES=()
# ================================
# Alle Website-Ordner durchgehen
# ================================
for SITE_PATH in "$WEBSITES_BASE"/*; do
[ -d "$SITE_PATH" ] || continue
SITE_NAME=$(basename "$SITE_PATH")
log
log "🔹 Verarbeite: $SITE_NAME"
# Volume-Namen
# Konvention: <site_name>-media (z.B. haider-media)
VOLUME_NAME="${SITE_NAME}-media"
# Prüfen ob das Volume existiert
if ! docker volume inspect "$VOLUME_NAME" &>/dev/null; then
log "⚠️ Volume '$VOLUME_NAME' nicht gefunden überspringe"
FAILED_SITES+=("$SITE_NAME (Volume nicht gefunden)")
continue
fi
# ================================
# Media-Volume sichern
# ================================
MEDIA_FILE="$RUN_DIR/media_${SITE_NAME}_${DATE}.tar.gz"
log "📦 Media-Volume Backup (Volume: $VOLUME_NAME)"
if docker run --rm \
-v "$VOLUME_NAME":/data \
-v "$RUN_DIR":/backup \
alpine sh -c "
nice -n 19 ionice -c2 -n7 \
tar -cf - -C /data . \
| gzip -1 > /backup/$(basename "$MEDIA_FILE")
"; then
log "✅ Media gesichert: $(basename "$MEDIA_FILE")"
else
log "❌ Media Backup fehlgeschlagen"
FAILED_SITES+=("$SITE_NAME (Media)")
continue
fi
done
# ================================
# Einmaliger Upload
# ================================
log
log "☁️ Starte Upload zu OneDrive..."
upload "$RUN_DIR" "$REMOTE/$DATE"
log "✅ Upload abgeschlossen"
cleanup_keep_latest "$REMOTE" 30
log "✅ Cleanup abgeschlossen!"
# ================================
# Aufräumen
# ================================
[[ -d "$BACKUP_DIR" ]] && rm -rf "$BACKUP_DIR"
log
log "🧹 Lokale temporäre Backups gelöscht"
log "🏁 Website Media-Backup abgeschlossen"
# ================================
# Ergebnisübersicht
# ================================
if [ "${#FAILED_SITES[@]}" -gt 0 ]; then
log
log "⚠️ Folgende Seiten hatten Probleme:"
for SITE in "${FAILED_SITES[@]}"; do
log " - $SITE"
done
else
log
log "🎉 Alle Website-Media-Volumes erfolgreich gesichert!"
fi