test-repo/scripts/daily-backup.sh
Matt Bruce 9cfd7843b8 docs: memory and task CRUD scripts
- Add gantt task CRUD bash and TypeScript utilities
- Update MEMORY.md with CRUD capabilities and rules
- Update daily memory with subagent completions
- Document: full task links, attach-then-delete rule
2026-02-21 16:32:24 -06:00

58 lines
1.8 KiB
Bash
Executable File

#!/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"