test-repo/scripts/daily-backup.sh
Matt Bruce 6ef43a00c3 Add daily data backup system
- Created daily-backup.sh script for all 3 web apps
- Backs up data/ directories to Git daily at 11:00 PM CST
- Commits and pushes to Gitea automatically
- Logs to memory/backup.log
- Cron job created for automated daily runs
2026-02-19 13:26:11 -06:00

59 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)
- tasks.json (gantt-board)
- 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"