Files
2026-05-12 15:51:12 +02:00

55 lines
1.1 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# -----------------------------
# volumecopy: Docker Volume Copy Tool
# Usage: volumecopy <source_volume> <target_volume>
# -----------------------------
if [ "$#" -ne 2 ]; then
echo "Usage: volumecopy <source_volume> <target_volume>"
exit 1
fi
SRC="$1"
DST="$2"
echo "==> Source: $SRC"
echo "==> Target: $DST"
# Prüfen ob Volumes existieren
if ! docker volume inspect "$SRC" >/dev/null 2>&1; then
echo "ERROR: Source volume '$SRC' does not exist!"
exit 1
fi
if ! docker volume inspect "$DST" >/dev/null 2>&1; then
echo "ERROR: Target volume '$DST' does not exist!"
exit 1
fi
# Warnung bei gleichem Namen
if [ "$SRC" == "$DST" ]; then
echo "ERROR: Source and target must be different!"
exit 1
fi
echo "==> Starting copy..."
echo "!! Make sure no container is using these volumes !!"
sleep 2
docker run --rm \
-v "$SRC":/from \
-v "$DST":/to \
alpine sh -c "cp -a /from/. /to/"
echo "==> Copy completed."
# Optional: Größe vergleichen
echo "==> Comparing sizes..."
docker run --rm \
-v "$SRC":/from \
-v "$DST":/to \
alpine sh -c "du -sh /from /to"
echo "==> Done."