#!/bin/bash # Absolutní cesta ke skriptu DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CONTAINER="mc-vanilla" BACKUP_DIR="/mnt/backups/minecraft_backups/frankstein" WORLD_DIR="$DIR/data/world" DATE_FULL=$(date +%F_%H-%M) DATE_HOUR=$(date +%F_%H) DATE_DAY=$(date +%F) ARCHIVE_NAME="$BACKUP_DIR/world_$DATE_FULL.tar.gz" mkdir -p "$BACKUP_DIR" # Zakázání ukládání ve hře docker exec -i $CONTAINER rcon-cli save-off docker exec -i $CONTAINER rcon-cli save-all sleep 3 # Vytvoření zálohy tar -czf "$ARCHIVE_NAME" "$WORLD_DIR" # Znovupovolení ukládání docker exec -i $CONTAINER rcon-cli save-on # Smazání všech záloh ze stejné hodiny, kromě nejnovější find "$BACKUP_DIR" -name "world_${DATE_HOUR}_*.tar.gz" ! -newer "$ARCHIVE_NAME" -delete # Zachování pouze nejnovější zálohy z každého předchozího dne find "$BACKUP_DIR" -name "world_*.tar.gz" | while read file; do file_day=$(basename "$file" | cut -d'_' -f2) newest=$(find "$BACKUP_DIR" -name "world_${file_day}_*.tar.gz" | sort | tail -n 1) if [ "$file" != "$newest" ]; then rm "$file" fi done