#!/bin/bash # VERALTET – nur noch für historische Stände relevant. # Das damalige Ziel ./uploads/ gibt es nicht mehr; Belege liegen inzwischen in # ./data/belege/, das Logo in ./data/logo/. Für den Umzug aus ./uploads/ in die # heutige Struktur ist scripts/migrate-datenverzeichnis.sh zuständig. # # Einmalige Migration: Uploads vom named Docker Volume in ./uploads/ (Bind Mount) # Vor dem ersten "docker compose up" mit dem neuen docker-compose.yml ausführen. # # Das Script ist idempotent: bereits vorhandene Dateien in ./uploads/ werden # nicht überschrieben. Es ist sicher, es mehrfach auszuführen. # # Usage: ./scripts/migrate-uploads-to-bindmount.sh set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" TARGET_DIR="$PROJECT_DIR/uploads" VOLUME_NAME="steuerkram_uploads" echo "=== Uploads-Migration: named Volume → Bind Mount ===" echo "Zielverzeichnis: $TARGET_DIR" echo "" # Prüfen ob das named Volume existiert if ! docker volume ls --format '{{.Name}}' | grep -qx "$VOLUME_NAME"; then echo "Named Volume '$VOLUME_NAME' nicht gefunden – nichts zu migrieren." echo "Zielverzeichnis wird angelegt (falls nicht vorhanden)." mkdir -p "$TARGET_DIR" echo "Fertig." exit 0 fi # Anzahl Dateien im Volume ermitteln FILE_COUNT=$(docker run --rm \ -v "$VOLUME_NAME:/src" \ alpine \ find /src -type f | wc -l) echo "Dateien im named Volume: $FILE_COUNT" if [ "$FILE_COUNT" -eq 0 ]; then echo "Volume ist leer – nichts zu kopieren." mkdir -p "$TARGET_DIR" echo "Fertig." exit 0 fi mkdir -p "$TARGET_DIR" echo "Kopiere Dateien ins Bind-Mount-Verzeichnis..." docker run --rm \ -v "$VOLUME_NAME:/src" \ -v "$TARGET_DIR:/dst" \ alpine \ sh -c 'cp -r /src/. /dst/' COPIED=$(find "$TARGET_DIR" -type f | wc -l) echo "" echo "Migration abgeschlossen: $COPIED Dateien in $TARGET_DIR" echo "" echo "Nächste Schritte:" echo " docker compose up -d" echo "" echo "Das named Volume '$VOLUME_NAME' kann danach gelöscht werden:" echo " docker volume rm $VOLUME_NAME"