init
This commit is contained in:
39
backup.sh
Normal file
39
backup.sh
Normal 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
|
||||
Reference in New Issue
Block a user