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
125 lines
5.3 KiB
Bash
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 |