This commit is contained in:
2025-10-02 00:51:42 +02:00
commit 070b02ea62
16 changed files with 298 additions and 0 deletions

39
backup.sh Normal file
View File

@@ -0,0 +1,39 @@
#!/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