Files
bootstrap-scripts/backup_named_volumes.sh

39 lines
972 B
Bash

#!/bin/bash
set -euo pipefail
PROJECT_NAME=$(basename "$(pwd)")
echo "📦 Docker Compose project: $PROJECT_NAME"
# Get all named volumes for this project
VOLUMES=$(docker volume ls --format '{{.Name}}' | grep "^${PROJECT_NAME}_")
if [[ -z "$VOLUMES" ]]; then
echo "❌ No volumes found for project '$PROJECT_NAME'"
exit 1
fi
for FULL_VOL in $VOLUMES; do
SHORT_VOL="${FULL_VOL#${PROJECT_NAME}_}"
VOLUME_PATH="/var/lib/docker/volumes/${FULL_VOL}/_data"
OUTPUT_FILE="${SHORT_VOL}.tar.gz"
echo "📁 Found volume: $SHORT_VOL"
read -rp "→ Backup this volume to ${OUTPUT_FILE}? (Y/n) " REPLY
REPLY=${REPLY:-Y}
if [[ "$REPLY" =~ ^[Yy]$ ]]; then
if [[ ! -d "$VOLUME_PATH" ]]; then
echo "⚠️ Volume path not found: $VOLUME_PATH"
continue
fi
echo "📦 Backing up $VOLUME_PATH$OUTPUT_FILE"
sudo tar -czf "$OUTPUT_FILE" -C "$VOLUME_PATH" .
echo "✅ Done."
else
echo "⏭️ Skipped $SHORT_VOL"
fi
done