75 lines
2.6 KiB
Bash
Executable File
75 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Daily backup script for OpenClaw workspace to GitTea
|
|
|
|
set -e
|
|
|
|
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")
|
|
LOG_FILE="/tmp/openclaw-backup.log"
|
|
|
|
echo "🔄 Starting OpenClaw backup... [$TIMESTAMP]" | tee -a "$LOG_FILE"
|
|
|
|
# GitTea credentials (stored in environment or config)
|
|
# For automated backups, credentials should be configured in ~/.git-credentials
|
|
# or use SSH keys
|
|
|
|
# Check if git credentials are configured
|
|
if ! git config --global credential.helper &>/dev/null; then
|
|
echo "⚠️ Warning: Git credential helper not configured" | tee -a "$LOG_FILE"
|
|
echo " Run: git config --global credential.helper store" | tee -a "$LOG_FILE"
|
|
fi
|
|
|
|
# Gotify alert function
|
|
send_gotify() {
|
|
local title="$1"
|
|
local message="$2"
|
|
local priority="${3:-0}"
|
|
local gotify_url="${GOTIFY_URL:-http://runtipi.kangaroo-eel.ts.net:8129}"
|
|
local gotify_token="${GOTIFY_API_KEY}"
|
|
|
|
if [[ -n "$gotify_token" ]]; then
|
|
curl -s -X POST "$gotify_url/message?token=$gotify_token" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"title\":\"$title\",\"message\":\"$message\",\"priority\":$priority}" > /dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
# Function to backup a repo
|
|
backup_repo() {
|
|
local path=$1
|
|
local name=$2
|
|
|
|
cd "$path"
|
|
|
|
# Check if there are changes
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "📦 $name: Changes detected, committing..." | tee -a "$LOG_FILE"
|
|
git add -A
|
|
git commit -m "Auto backup: $TIMESTAMP" || echo "⚠️ Commit failed or nothing to commit"
|
|
|
|
echo "☁️ $name: Pushing to GitTea..." | tee -a "$LOG_FILE"
|
|
if git push origin main 2>&1 | tee -a "$LOG_FILE"; then
|
|
echo "✅ $name: Backup successful" | tee -a "$LOG_FILE"
|
|
else
|
|
echo "❌ $name: Push failed - check credentials" | tee -a "$LOG_FILE"
|
|
send_gotify "⚠️ Backup Failed" "$name push to Gitea failed. Check credentials." 5
|
|
fi
|
|
else
|
|
echo "⏭️ $name: No changes to backup" | tee -a "$LOG_FILE"
|
|
fi
|
|
}
|
|
|
|
# Backup workspace
|
|
echo "📂 Backing up workspace..." | tee -a "$LOG_FILE"
|
|
backup_repo "/home/openclaw/.openclaw/workspace" "workspace"
|
|
|
|
echo "" | tee -a "$LOG_FILE"
|
|
echo "✅ Backup process complete!" | tee -a "$LOG_FILE"
|
|
echo "📄 Log saved to: $LOG_FILE" | tee -a "$LOG_FILE"
|
|
|
|
# Show recent backups
|
|
echo "" | tee -a "$LOG_FILE"
|
|
echo "📊 Recent backups:" | tee -a "$LOG_FILE"
|
|
cd /home/openclaw/.openclaw/workspace && git log --oneline -3 | tee -a "$LOG_FILE"
|
|
|
|
# Send success notification
|
|
send_gotify "✅ Backup Complete" "OpenClaw backup to Gitea succeeded" |