- 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
59 lines
1.8 KiB
Bash
Executable File
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"
|