🦀 Import 50+ OpenWebUI memories - family, health, career, tech stack
- Grace's cancer journey timeline - Mia's full DNA breakdown - Career elevator pitch (SolarReturn, WA EV Network, Bright Horizons) - Pacific Energy brand colors + all 8 offices - 2025 New Year's resolutions - Health stack: Pristiq, Wegovy, Minoxidil, skincare - Tech setup: Proxmox, Tailscale, Portainer, Home Assistant - Personal preferences: walking, coffee, Ember mugs, Good Pair Days
This commit is contained in:
65
scripts/backup-to-gitea.sh
Executable file
65
scripts/backup-to-gitea.sh
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
# OpenClaw Backup to Gitea
|
||||
# Backs up workspace + state directory to Gitea repo
|
||||
|
||||
set -e
|
||||
|
||||
BACKUP_DIR="$HOME/.openclaw/workspace"
|
||||
STATE_DIR="$HOME/.openclaw"
|
||||
REPO_DIR="$HOME/openclaw-backup"
|
||||
# Use SSH URL (requires SSH key setup) or HTTP with credentials
|
||||
# SSH: git@gitea.kangaroo-eel.ts.net:Anthony/openclaw-backup.git
|
||||
# HTTP with token: http://username:token@gitea.kangaroo-eel.ts.net:3000/Anthony/openclaw-backup.git
|
||||
REPO_URL="${GITEA_BACKUP_URL:-git@gitea.kangaroo-eel.ts.net:Anthony/openclaw-backup.git}"
|
||||
LOG_FILE="$HOME/.openclaw/workspace/logs/backup.log"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Ensure log directory exists
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
|
||||
log "Starting backup..."
|
||||
|
||||
# Clone or update repo
|
||||
if [ -d "$REPO_DIR" ]; then
|
||||
log "Updating existing repo..."
|
||||
cd "$REPO_DIR"
|
||||
git pull --rebase || log "Warning: pull failed, continuing..."
|
||||
else
|
||||
log "Cloning backup repo..."
|
||||
git clone "$REPO_URL" "$REPO_DIR"
|
||||
cd "$REPO_DIR"
|
||||
fi
|
||||
|
||||
# Backup workspace (excluding scripts directory to avoid recursion)
|
||||
log "Backing up workspace..."
|
||||
rsync -av --delete \
|
||||
--exclude='.git' \
|
||||
--exclude='node_modules' \
|
||||
--exclude='*.log' \
|
||||
"$BACKUP_DIR/" "$REPO_DIR/workspace/"
|
||||
|
||||
# Backup state directory (critical config)
|
||||
log "Backing up state directory..."
|
||||
mkdir -p "$REPO_DIR/state"
|
||||
rsync -av --delete \
|
||||
--include='openclaw.json' \
|
||||
--include='cron/' \
|
||||
--include='cron/**' \
|
||||
--include='skills/' \
|
||||
--include='skills/**' \
|
||||
--include='devices/' \
|
||||
--include='devices/**' \
|
||||
--exclude='*' \
|
||||
"$STATE_DIR/" "$REPO_DIR/state/"
|
||||
|
||||
# Commit and push
|
||||
log "Committing changes..."
|
||||
cd "$REPO_DIR"
|
||||
git add -A
|
||||
git diff --cached --quiet || git commit -m "Backup: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
git push origin main || git push origin master
|
||||
|
||||
log "Backup complete!"
|
||||
45
scripts/restore-from-gittea.sh
Executable file
45
scripts/restore-from-gittea.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
# Restore OpenClaw from Gitea backup
|
||||
# Usage: ./restore-from-gitea.sh
|
||||
|
||||
set -e
|
||||
|
||||
REPO_DIR="$HOME/openclaw-backup"
|
||||
REPO_URL="http://gitea.kangaroo-eel.ts.net:3000/Anthony/openclaw-backup.git"
|
||||
STATE_DIR="$HOME/.openclaw"
|
||||
WORKSPACE_DIR="$HOME/.openclaw/workspace"
|
||||
|
||||
echo "=== OpenClaw Restore Script ==="
|
||||
echo ""
|
||||
|
||||
# Clone or update repo
|
||||
if [ -d "$REPO_DIR" ]; then
|
||||
echo "Updating existing backup repo..."
|
||||
cd "$REPO_DIR"
|
||||
git pull
|
||||
else
|
||||
echo "Cloning backup repo..."
|
||||
git clone "$REPO_URL" "$REPO_DIR"
|
||||
cd "$REPO_DIR"
|
||||
fi
|
||||
|
||||
# Restore state directory
|
||||
if [ -d "$REPO_DIR/state" ]; then
|
||||
echo "Restoring state directory..."
|
||||
rsync -av "$REPO_DIR/state/" "$STATE_DIR/"
|
||||
else
|
||||
echo "Warning: No state directory in backup"
|
||||
fi
|
||||
|
||||
# Restore workspace (optional - may not want to overwrite)
|
||||
echo ""
|
||||
echo "Workspace restore is optional. Current workspace may have newer files."
|
||||
read -p "Restore workspace too? (y/N): " answer
|
||||
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
|
||||
echo "Restoring workspace..."
|
||||
rsync -av "$REPO_DIR/workspace/" "$WORKSPACE_DIR/"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Restore Complete ==="
|
||||
echo "You may need to restart the gateway: openclaw gateway restart"
|
||||
Reference in New Issue
Block a user