Files
openclaw-workspace-2026/scripts/backup_server.sh
T
JC Beasley a1aca9bfc6 Establish baseline: core documentation and memory system
Adds foundational workspace documentation:
- Core identity and operating principles (SOUL.md, IDENTITY.md, AGENTS.md, USER.md)
- Memory management system specification (MEMORY.md)
- Development team context and workflow (CONTEXT.md, PROJECTS.md)
- Environment notes template (TOOLS.md)
- Heartbeat task template (HEARTBEAT.md)

Includes super-enhanced memory system:
- JavaScript memory engine implementation
- Memory initialization and test scripts
- Daily memory logs for 2026-07-03, 2026-07-04
- Project-level memory structure for site-survey-ai

Adds project templates:
- Standard Python Flask application template
2026-07-04 15:11:30 -07:00

125 lines
5.3 KiB
Bash

#!/bin/bash
# Server Backup Script
# Creates comprehensive backup of all applications and system state
set -e
# Create timestamped backup directory
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/jcbeasley/backups/$TIMESTAMP"
LOG_FILE="$BACKUP_DIR/backup.log"
echo "Starting server backup at $(date)" | tee $LOG_FILE
# Create backup directory
mkdir -p $BACKUP_DIR
echo "Created backup directory: $BACKUP_DIR" | tee -a $LOG_FILE
# Backup entire home directory
echo "Backing up home directory..." | tee -a $LOG_FILE
tar -czf $BACKUP_DIR/home_backup.tar.gz -C / --exclude='home/jcbeasley/backups' --exclude='home/jcbeasley/.cache' home/jcbeasley 2>>$LOG_FILE
echo "Home directory backup completed" | tee -a $LOG_FILE
# Backup running processes information
echo "Documenting running processes..." | tee -a $LOG_FILE
ps aux > $BACKUP_DIR/running_processes.txt
ss -tulpn > $BACKUP_DIR/port_usage.txt
crontab -l > $BACKUP_DIR/crontab_backup.txt 2>/dev/null || echo "No crontab" > $BACKUP_DIR/crontab_backup.txt
# Backup each application individually
echo "Backing up individual applications..." | tee -a $LOG_FILE
# IT Site Survey AI (Port 3003)
if [ -d "/home/jcbeasley/.openclaw/workspace/Projects/site-survey-ai" ]; then
tar -czf $BACKUP_DIR/site-survey-ai_backup.tar.gz -C /home/jcbeasley/.openclaw/workspace/Projects site-survey-ai 2>>$LOG_FILE
echo "IT Site Survey AI backup completed" | tee -a $LOG_FILE
# Export current data if application is running
if curl -s http://localhost:3003/health > /dev/null 2>&1; then
echo "Exporting IT Site Survey AI data..." | tee -a $LOG_FILE
curl -s http://localhost:3003/api/surveys/responses > $BACKUP_DIR/site_survey_data.json 2>>$LOG_FILE
echo "IT Site Survey AI data export completed" | tee -a $LOG_FILE
fi
fi
# Client Onboarding (Port 5000)
if [ -d "/home/jcbeasley/.openclaw/workspace/Projects/client-onboarding" ]; then
tar -czf $BACKUP_DIR/client-onboarding_backup.tar.gz -C /home/jcbeasley/.openclaw/workspace/Projects client-onboarding 2>>$LOG_FILE
echo "Client Onboarding backup completed" | tee -a $LOG_FILE
fi
# Projects Manager (Port 3456)
if [ -d "/home/jcbeasley/projects-manager" ]; then
tar -czf $BACKUP_DIR/projects-manager_backup.tar.gz -C /home/jcbeasley projects-manager 2>>$LOG_FILE
echo "Projects Manager backup completed" | tee -a $LOG_FILE
fi
# Document process configurations
echo "Documenting process configurations..." | tee -a $LOG_FILE
echo "# Process Start Commands - Backup $TIMESTAMP" > $BACKUP_DIR/process_configs.txt
echo "IT Site Survey AI: cd /home/jcbeasley/.openclaw/workspace/Projects/site-survey-ai && source venv/bin/activate && nohup python3 app.py > app.log 2>&1 &" >> $BACKUP_DIR/process_configs.txt
echo "Client Onboarding: cd /home/jcbeasley/.openclaw/workspace/Projects/client-onboarding && source venv/bin/activate && nohup python3 app.py > app.log 2>&1 &" >> $BACKUP_DIR/process_configs.txt
echo "Projects Manager: cd /home/jcbeasley/projects-manager && source venv/bin/activate && nohup python3 app.py > app.log 2>&1 &" >> $BACKUP_DIR/process_configs.txt
# Verify backups
echo "Verifying backups..." | tee -a $LOG_FILE
if [ -f "$BACKUP_DIR/home_backup.tar.gz" ]; then
BACKUP_SIZE=$(du -h $BACKUP_DIR/home_backup.tar.gz | cut -f1)
echo "Home backup size: $BACKUP_SIZE" | tee -a $LOG_FILE
fi
# Create restore script
echo "Creating restore script..." | tee -a $LOG_FILE
cat > $BACKUP_DIR/restore.sh << 'EOF'
#!/bin/bash
# Restore Script for Backup TIMESTAMP
# Usage: ./restore.sh [application_name]
BACKUP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TIMESTAMP="$(basename $BACKUP_DIR)"
echo "Starting restore from backup $TIMESTAMP"
if [ "$1" == "" ]; then
echo "Restoring entire server..."
# Stop all python applications
pkill -f "python.*app.py" 2>/dev/null || true
pkill -f "python.*server.py" 2>/dev/null || true
# Restore home directory
tar -xzf $BACKUP_DIR/home_backup.tar.gz -C /
echo "Server restore completed. Please restart applications manually."
elif [ "$1" == "site-survey-ai" ]; then
echo "Restoring IT Site Survey AI..."
pkill -f "site-survey-ai" 2>/dev/null || true
tar -xzf $BACKUP_DIR/site-survey-ai_backup.tar.gz -C /home/jcbeasley/.openclaw/workspace/Projects/
echo "IT Site Survey AI restore completed."
elif [ "$1" == "client-onboarding" ]; then
echo "Restoring Client Onboarding..."
pkill -f "client-onboarding" 2>/dev/null || true
tar -xzf $BACKUP_DIR/client-onboarding_backup.tar.gz -C /home/jcbeasley/.openclaw/workspace/Projects/
echo "Client Onboarding restore completed."
elif [ "$1" == "projects-manager" ]; then
echo "Restoring Projects Manager..."
pkill -f "projects-manager" 2>/dev/null || true
tar -xzf $BACKUP_DIR/projects-manager_backup.tar.gz -C /home/jcbeasley/
echo "Projects Manager restore completed."
else
echo "Unknown application: $1"
echo "Available applications: site-survey-ai, client-onboarding, projects-manager"
exit 1
fi
EOF
# Make restore script executable
chmod +x $BACKUP_DIR/restore.sh
# Update timestamp in restore script
sed -i "s/TIMESTAMP/$TIMESTAMP/g" $BACKUP_DIR/restore.sh
echo "Backup completed successfully at $(date)" | tee -a $LOG_FILE
echo "Backup location: $BACKUP_DIR" | tee -a $LOG_FILE
echo "To restore: cd $BACKUP_DIR && ./restore.sh" | tee -a $LOG_FILE