Initial backup 2026-02-17
This commit is contained in:
7
skills/git-crypt-backup/.clawhub/origin.json
Normal file
7
skills/git-crypt-backup/.clawhub/origin.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 1,
|
||||
"registry": "https://clawhub.ai",
|
||||
"slug": "git-crypt-backup",
|
||||
"installedVersion": "1.0.0",
|
||||
"installedAt": 1770427010880
|
||||
}
|
||||
120
skills/git-crypt-backup/SKILL.md
Normal file
120
skills/git-crypt-backup/SKILL.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
name: git-crypt-backup
|
||||
description: Backup Clawdbot workspace and config to GitHub with git-crypt encryption. Use for daily automated backups or manual backup/restore operations.
|
||||
---
|
||||
|
||||
# Git-Crypt Backup
|
||||
|
||||
Automated backup of Clawdbot workspace (`~/clawd`) and config (`~/.clawdbot`) to GitHub with sensitive files encrypted via git-crypt.
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Create GitHub repos (private recommended)
|
||||
|
||||
```bash
|
||||
# Create two private repos on GitHub:
|
||||
# - <username>/clawdbot-workspace
|
||||
# - <username>/clawdbot-config
|
||||
```
|
||||
|
||||
### 2. Initialize git-crypt
|
||||
|
||||
```bash
|
||||
# Install git-crypt
|
||||
brew install git-crypt # macOS
|
||||
# apt install git-crypt # Linux
|
||||
|
||||
# Workspace repo
|
||||
cd ~/clawd
|
||||
git init
|
||||
git-crypt init
|
||||
git remote add origin git@github.com:<username>/clawdbot-workspace.git
|
||||
|
||||
# Config repo
|
||||
cd ~/.clawdbot
|
||||
git init
|
||||
git-crypt init
|
||||
git remote add origin git@github.com:<username>/clawdbot-config.git
|
||||
```
|
||||
|
||||
### 3. Configure encryption
|
||||
|
||||
**Workspace `.gitattributes`:**
|
||||
```
|
||||
SOUL.md filter=git-crypt diff=git-crypt
|
||||
USER.md filter=git-crypt diff=git-crypt
|
||||
HEARTBEAT.md filter=git-crypt diff=git-crypt
|
||||
MEMORY.md filter=git-crypt diff=git-crypt
|
||||
memory/** filter=git-crypt diff=git-crypt
|
||||
```
|
||||
|
||||
**Config `.gitattributes`:**
|
||||
```
|
||||
clawdbot.json filter=git-crypt diff=git-crypt
|
||||
.env filter=git-crypt diff=git-crypt
|
||||
credentials/** filter=git-crypt diff=git-crypt
|
||||
telegram/** filter=git-crypt diff=git-crypt
|
||||
identity/** filter=git-crypt diff=git-crypt
|
||||
agents/**/sessions/** filter=git-crypt diff=git-crypt
|
||||
nodes/** filter=git-crypt diff=git-crypt
|
||||
```
|
||||
|
||||
**Config `.gitignore`:**
|
||||
```
|
||||
*.bak
|
||||
*.bak.*
|
||||
.DS_Store
|
||||
logs/
|
||||
media/
|
||||
browser/
|
||||
subagents/
|
||||
memory/
|
||||
update-check.json
|
||||
*.lock
|
||||
```
|
||||
|
||||
### 4. Export keys (important!)
|
||||
|
||||
```bash
|
||||
mkdir -p ~/clawdbot-keys
|
||||
cd ~/clawd && git-crypt export-key ~/clawdbot-keys/workspace.key
|
||||
cd ~/.clawdbot && git-crypt export-key ~/clawdbot-keys/config.key
|
||||
```
|
||||
|
||||
⚠️ **Store these keys securely** (1Password, iCloud Keychain, USB drive, etc.)
|
||||
|
||||
### 5. Initial commit & push
|
||||
|
||||
```bash
|
||||
cd ~/clawd && git add -A && git commit -m "Initial backup" && git push -u origin main
|
||||
cd ~/.clawdbot && git add -A && git commit -m "Initial backup" && git push -u origin main
|
||||
```
|
||||
|
||||
## Daily Backup
|
||||
|
||||
Run `scripts/backup.sh`:
|
||||
|
||||
```bash
|
||||
~/clawd/skills/git-crypt-backup/scripts/backup.sh
|
||||
```
|
||||
|
||||
Or set up a cron job for automatic daily backups.
|
||||
|
||||
## Restore on New Machine
|
||||
|
||||
```bash
|
||||
# 1. Clone repos
|
||||
git clone git@github.com:<username>/clawdbot-workspace.git ~/clawd
|
||||
git clone git@github.com:<username>/clawdbot-config.git ~/.clawdbot
|
||||
|
||||
# 2. Unlock with keys
|
||||
cd ~/clawd && git-crypt unlock /path/to/workspace.key
|
||||
cd ~/.clawdbot && git-crypt unlock /path/to/config.key
|
||||
```
|
||||
|
||||
## What Gets Encrypted
|
||||
|
||||
| Repo | Encrypted | Plain |
|
||||
|------|-----------|-------|
|
||||
| workspace | SOUL/USER/HEARTBEAT/MEMORY.md, memory/** | AGENTS.md, IDENTITY.md, TOOLS.md, drafts/** |
|
||||
| config | clawdbot.json, .env, credentials/**, sessions/** | cron/jobs.json, settings/** |
|
||||
6
skills/git-crypt-backup/_meta.json
Normal file
6
skills/git-crypt-backup/_meta.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"ownerId": "kn70mk4werxar3718ac13y18mn7zy97h",
|
||||
"slug": "git-crypt-backup",
|
||||
"version": "1.0.0",
|
||||
"publishedAt": 1769394851548
|
||||
}
|
||||
33
skills/git-crypt-backup/scripts/backup.sh
Normal file
33
skills/git-crypt-backup/scripts/backup.sh
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
# Daily backup script for Clawdbot workspace and config
|
||||
|
||||
set -e
|
||||
|
||||
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")
|
||||
|
||||
backup_repo() {
|
||||
local path=$1
|
||||
local name=$2
|
||||
|
||||
cd "$path"
|
||||
|
||||
# Check if there are changes
|
||||
if [[ -n $(git status --porcelain) ]]; then
|
||||
git add -A
|
||||
git commit -m "Auto backup: $TIMESTAMP"
|
||||
git push
|
||||
echo "✅ $name: backed up"
|
||||
else
|
||||
echo "⏭️ $name: no changes"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "🔄 Starting Clawdbot backup..."
|
||||
|
||||
# Backup workspace
|
||||
backup_repo "$HOME/clawd" "workspace"
|
||||
|
||||
# Backup config
|
||||
backup_repo "$HOME/.clawdbot" "config"
|
||||
|
||||
echo "✅ Backup complete!"
|
||||
Reference in New Issue
Block a user