backup new websites
This commit is contained in:
Executable
+51
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
source /home/nico/backup/lib.sh
|
||||
source /home/nico/docker-setup/mongodb/.env
|
||||
|
||||
# ================================
|
||||
# Einstellungen
|
||||
# ================================
|
||||
CONTAINER="mongodb" # Name deines MongoDB-Docker-Containers
|
||||
DB_USER="${MONGO_ROOT_USER}" # MongoDB Root-User (aus .env)
|
||||
DB_PASS="${MONGO_ROOT_PASSWORD}" # MongoDB Root-Passwort (aus .env)
|
||||
BACKUP_DIR="/home/nico/backup/tmp/mongodb_backups" # Temporärer Backup-Pfad auf dem Server
|
||||
REMOTE="onedrive-tdhaider:/IONOS/Backups/mongodb" # Ziel auf OneDrive
|
||||
|
||||
DATE=$(date +%F_%H-%M-%S)
|
||||
FILE="$BACKUP_DIR/mongodb_all_${DATE}.archive.gz"
|
||||
|
||||
# ================================
|
||||
# Backup-Ordner vorbereiten
|
||||
# ================================
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# ================================
|
||||
# Backup aller Datenbanken
|
||||
# ================================
|
||||
log "📦 Backup starte für alle MongoDB-Datenbanken ..."
|
||||
docker exec -t "$CONTAINER" mongodump \
|
||||
--username "$DB_USER" \
|
||||
--password "$DB_PASS" \
|
||||
--authenticationDatabase admin \
|
||||
--archive \
|
||||
| gzip > "$FILE" \
|
||||
|| fail "Fehler beim MongoDB-Backup"
|
||||
|
||||
# ================================
|
||||
# Upload zu OneDrive
|
||||
# ================================
|
||||
log "☁️ Lade Backup zu OneDrive hoch ..."
|
||||
upload "$FILE" "$REMOTE"
|
||||
log "✅ Upload abgeschlossen!"
|
||||
|
||||
cleanup_keep_latest "$REMOTE" 30
|
||||
log "✅ Cleanup abgeschlossen!"
|
||||
|
||||
# ================================
|
||||
# Lokale Backups aufräumen
|
||||
# ================================
|
||||
[[ -d "$BACKUP_DIR" ]] && rm -rf "$BACKUP_DIR"
|
||||
log "🧹 Lokale temporäre Backups gelöscht."
|
||||
|
||||
log "🏁 MongoDB-Backup abgeschlossen!"
|
||||
Executable
+99
@@ -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
|
||||
Reference in New Issue
Block a user