#!/bin/zsh # Daily Data Backup Script # Commits data files from all 3 web apps to Git for backup # Runs daily via cron TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S %Z') LOG_FILE="/Users/mattbruce/.openclaw/workspace/memory/backup.log" # Ensure log file exists touch "$LOG_FILE" echo "[$TIMESTAMP] Starting daily data backup..." >> "$LOG_FILE" # Function to backup a project backup_project() { local project_path=$1 local project_name=$2 cd "$project_path" || return 1 # Check if there are changes to data files if git diff --quiet data/ 2>/dev/null && git diff --cached --quiet data/ 2>/dev/null; then echo "[$TIMESTAMP] $project_name: No changes to backup" >> "$LOG_FILE" return 0 fi # Add data files git add data/ >> "$LOG_FILE" 2>&1 # Commit with timestamp git commit -m "Daily data backup - $TIMESTAMP Auto-commit of data files: - messages.json (blog-backup) - apps.json & status.json (heartbeat-monitor)" >> "$LOG_FILE" 2>&1 if [ $? -eq 0 ]; then # Push to Gitea git push gitea main >> "$LOG_FILE" 2>&1 if [ $? -eq 0 ]; then echo "[$TIMESTAMP] ✅ $project_name: Backup successful" >> "$LOG_FILE" else echo "[$TIMESTAMP] ❌ $project_name: Push failed" >> "$LOG_FILE" fi else echo "[$TIMESTAMP] ⚠️ $project_name: No changes to commit" >> "$LOG_FILE" fi } # Backup all 3 projects backup_project "/Users/mattbruce/Documents/Projects/OpenClaw/Web/gantt-board" "gantt-board" backup_project "/Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup" "blog-backup" backup_project "/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor" "heartbeat-monitor" echo "[$TIMESTAMP] Daily backup complete" >> "$LOG_FILE" echo "---" >> "$LOG_FILE"