1
0
Files
hytale-server-admin/hytale-update.sh
Peter Siegmund 2295825b35 initial
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2026-01-17 15:37:34 +01:00

67 lines
1.6 KiB
Bash

#!/bin/bash
#
# Hytale Server Update Script
# Runs the updater, extracts new files, and restarts the server
#
set -e
HYTALE_DIR="/opt/hytale"
LOG_FILE="/var/log/hytale-update.log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
cd "$HYTALE_DIR"
log "Starting update check..."
# Run the updater to check for and download updates
# The updater downloads files like "2026-01-17-abcdef.zip"
./updater 2>&1 | tee -a "$LOG_FILE"
# Find the newest zip file (pattern: YYYY-MM-DD-*.zip)
NEWEST_ZIP=$(ls -t [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-*.zip 2>/dev/null | head -n1)
if [ -z "$NEWEST_ZIP" ]; then
log "No update zip found. Nothing to do."
exit 0
fi
# Check if this update was already applied
APPLIED_MARKER=".applied_updates"
if grep -Fxq "$NEWEST_ZIP" "$APPLIED_MARKER" 2>/dev/null; then
log "Update $NEWEST_ZIP was already applied. Skipping."
exit 0
fi
log "New update found: $NEWEST_ZIP"
# Stop the server
log "Stopping Hytale server..."
systemctl stop hytale.service || true
# Wait for server to fully stop
sleep 5
# Extract the update directly to /opt/hytale
log "Extracting $NEWEST_ZIP to $HYTALE_DIR..."
unzip -o "$NEWEST_ZIP" -d "$HYTALE_DIR"
# Fix file ownership (since this script runs as root)
chown -R mars3142:mars3142 "$HYTALE_DIR"
# Mark this update as applied
echo "$NEWEST_ZIP" >> "$APPLIED_MARKER"
# Start the server again
log "Starting Hytale server..."
systemctl start hytale.service
# Cleanup: keep only the 3 newest zip files
log "Cleaning up old zip files..."
ls -t [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-*.zip 2>/dev/null | tail -n +4 | xargs -r rm -f
log "Update complete!"