Files
Minecraft-Server/backup.sh
Paul Kloppers 90697cdb62 Run world archive via docker exec
Stream tar from inside the container to the host, so all server
interaction (rcon + archive) happens through docker exec. Requires
the container to be running; fails fast otherwise.
2026-04-21 20:36:27 +02:00

31 lines
810 B
Bash
Executable File

#!/usr/bin/env bash
# Usage: ./backup.sh [label]
# Creates backups/world-YYYY-MM-DD-HHMM[-label].tar.gz
# Requires the minecraft container to be running.
set -euo pipefail
cd "$(dirname "$0")"
LABEL="${1:-}"
STAMP="$(date +%Y-%m-%d-%H%M)"
SUFFIX="${LABEL:+-$LABEL}"
OUT="backups/world-${STAMP}${SUFFIX}.tar.gz"
mkdir -p backups
if ! docker ps --format '{{.Names}}' | grep -qx minecraft; then
echo "Error: minecraft container is not running." >&2
exit 1
fi
echo "Flushing world via rcon..."
docker exec minecraft rcon-cli save-off >/dev/null
docker exec minecraft rcon-cli save-all flush >/dev/null
trap 'docker exec minecraft rcon-cli save-on >/dev/null || true' EXIT
echo "Archiving /data/world -> ${OUT}"
docker exec minecraft tar -czf - -C /data world > "${OUT}"
echo "Done."
ls -lh "${OUT}"