Steuerkram/scripts/migrate-uploads-to-bindmount.sh

67 lines
2 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"