#!/bin/bash #=============================================================================== # Garry's Mod PropHunt Server - Backup Script #=============================================================================== INSTALL_DIR="${GMOD_INSTALL_DIR:-/home/gmod}" SERVER_DIR="${INSTALL_DIR}/serverfiles" BACKUP_DIR="${BACKUP_DIR:-/home/gmod/backups}" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_NAME="gmod_prophunt_backup_${DATE}.tar.gz" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } echo -e "${GREEN}" echo "╔═══════════════════════════════════════════════════════════════╗" echo "║ 💾 Garry's Mod PropHunt Backup Script 💾 ║" echo "╚═══════════════════════════════════════════════════════════════╝" echo -e "${NC}" # Create backup directory mkdir -p "$BACKUP_DIR" log_info "Creating backup..." # Items to backup BACKUP_ITEMS=( "$SERVER_DIR/garrysmod/cfg" "$SERVER_DIR/garrysmod/data" "$SERVER_DIR/garrysmod/addons/ulib" "$SERVER_DIR/garrysmod/addons/ulx" "$SERVER_DIR/garrysmod/addons/sourcemod/configs" "$SERVER_DIR/garrysmod/addons/sourcemod/data" ) # Create temporary directory for backup TEMP_BACKUP="/tmp/gmod_backup_${DATE}" mkdir -p "$TEMP_BACKUP" # Copy files to temp directory for item in "${BACKUP_ITEMS[@]}"; do if [[ -e "$item" ]]; then cp -r "$item" "$TEMP_BACKUP/" 2>/dev/null fi done # Create compressed archive cd /tmp tar -czf "$BACKUP_DIR/$BACKUP_NAME" "gmod_backup_${DATE}" # Cleanup temp directory rm -rf "$TEMP_BACKUP" # Keep only last 7 backups cd "$BACKUP_DIR" ls -t gmod_prophunt_backup_*.tar.gz | tail -n +8 | xargs -r rm log_success "Backup created: $BACKUP_DIR/$BACKUP_NAME" # Show backup size BACKUP_SIZE=$(du -h "$BACKUP_DIR/$BACKUP_NAME" | cut -f1) echo "" echo -e "${BLUE}Backup Details:${NC}" echo " • Location: $BACKUP_DIR/$BACKUP_NAME" echo " • Size: $BACKUP_SIZE" echo "" # List recent backups echo -e "${BLUE}Recent Backups:${NC}" ls -lh "$BACKUP_DIR"/*.tar.gz 2>/dev/null | tail -5