← 返回 Skills 市场
Clawdbot Backup
作者
Sebastian-Buitrag0
· GitHub ↗
· v1.0.0
4271
总下载
17
收藏
15
当前安装
1
版本数
在 OpenClaw 中安装
/install clawdbot-backup
功能描述
Backup and restore ClawdBot configuration, skills, commands, and settings. Sync across devices, version control with git, automate backups, and migrate to new machines.
使用说明 (SKILL.md)
ClawdBot Backup Skill
Backup, restore, and sync your ClawdBot configuration across devices directly from Clawdbot.
Overview
This skill helps you:
- Backup all ClawdBot data and settings
- Restore from backups
- Sync between multiple machines
- Version control your configuration
- Automate backup routines
- Migrate to new devices
ClawdBot Directory Structure
Key Locations
~/.claude/ # Main ClawdBot directory
├── settings.json # Global settings
├── settings.local.json # Local overrides (machine-specific)
├── projects.json # Project configurations
├── skills/ # Your custom skills
│ ├── skill-name/
│ │ ├── SKILL.md
│ │ └── supporting-files/
│ └── another-skill/
├── commands/ # Custom slash commands (legacy)
│ └── command-name.md
├── contexts/ # Saved contexts
├── templates/ # Response templates
└── mcp/ # MCP server configurations
└── servers.json
~/projects/ # Your projects (optional backup)
├── project-1/
│ └── .claude/ # Project-specific config
│ ├── settings.json
│ └── skills/
└── project-2/
What to Backup
ESSENTIAL (Always backup):
✓ ~/.claude/skills/ # Custom skills
✓ ~/.claude/commands/ # Custom commands
✓ ~/.claude/settings.json # Global settings
✓ ~/.claude/mcp/ # MCP configurations
RECOMMENDED (Usually backup):
✓ ~/.claude/contexts/ # Saved contexts
✓ ~/.claude/templates/ # Templates
✓ Project .claude/ folders # Project configs
OPTIONAL (Case by case):
○ ~/.claude/settings.local.json # Machine-specific
○ Cache directories # Can be rebuilt
○ Log files # Usually not needed
Quick Backup Commands
Full Backup
# Create timestamped backup
BACKUP_DIR="$HOME/clawdbot-backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="clawdbot_backup_$TIMESTAMP"
mkdir -p "$BACKUP_DIR"
tar -czvf "$BACKUP_DIR/$BACKUP_NAME.tar.gz" \
-C "$HOME" \
.claude/skills \
.claude/commands \
.claude/settings.json \
.claude/mcp \
.claude/contexts \
.claude/templates \
2>/dev/null
echo "Backup created: $BACKUP_DIR/$BACKUP_NAME.tar.gz"
Quick Skills-Only Backup
# Backup just skills
tar -czvf ~/clawdbot_skills_$(date +%Y%m%d).tar.gz \
-C "$HOME" .claude/skills .claude/commands
Restore from Backup
# Restore full backup
BACKUP_FILE="$HOME/clawdbot-backups/clawdbot_backup_20260129.tar.gz"
# Preview contents first
tar -tzvf "$BACKUP_FILE"
# Restore (will overwrite existing)
tar -xzvf "$BACKUP_FILE" -C "$HOME"
echo "Restore complete!"
Backup Script
Full-Featured Backup Script
#!/bin/bash
# clawdbot-backup.sh - Comprehensive ClawdBot backup tool
set -e
# Configuration
BACKUP_ROOT="${CLAWDBOT_BACKUP_DIR:-$HOME/clawdbot-backups}"
CLAUDE_DIR="$HOME/.claude"
MAX_BACKUPS=10 # Keep last N backups
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
# Check if ClawdBot directory exists
check_claude_dir() {
if [ ! -d "$CLAUDE_DIR" ]; then
log_error "ClawdBot directory not found: $CLAUDE_DIR"
exit 1
fi
}
# Create backup
create_backup() {
local backup_type="${1:-full}"
local backup_name="clawdbot_${backup_type}_${TIMESTAMP}"
local backup_path="$BACKUP_ROOT/$backup_name.tar.gz"
mkdir -p "$BACKUP_ROOT"
log_info "Creating $backup_type backup..."
case $backup_type in
full)
tar -czvf "$backup_path" \
-C "$HOME" \
.claude/skills \
.claude/commands \
.claude/settings.json \
.claude/settings.local.json \
.claude/projects.json \
.claude/mcp \
.claude/contexts \
.claude/templates \
2>/dev/null || true
;;
skills)
tar -czvf "$backup_path" \
-C "$HOME" \
.claude/skills \
.claude/commands \
2>/dev/null || true
;;
settings)
tar -czvf "$backup_path" \
-C "$HOME" \
.claude/settings.json \
.claude/settings.local.json \
.claude/mcp \
2>/dev/null || true
;;
*)
log_error "Unknown backup type: $backup_type"
exit 1
;;
esac
if [ -f "$backup_path" ]; then
local size=$(du -h "$backup_path" | cut -f1)
log_info "Backup created: $backup_path ($size)"
else
log_error "Backup failed!"
exit 1
fi
}
# List backups
list_backups() {
log_info "Available backups in $BACKUP_ROOT:"
echo ""
if [ -d "$BACKUP_ROOT" ]; then
ls -lh "$BACKUP_ROOT"/*.tar.gz 2>/dev/null | \
awk '{print $9, $5, $6, $7, $8}' || \
echo "No backups found."
else
echo "Backup directory doesn't exist."
fi
}
# Restore backup
restore_backup() {
local backup_file="$1"
if [ -z "$backup_file" ]; then
log_error "Please specify backup file"
list_backups
exit 1
fi
if [ ! -f "$backup_file" ]; then
# Try relative path in backup dir
backup_file="$BACKUP_ROOT/$backup_file"
fi
if [ ! -f "$backup_file" ]; then
log_error "Backup file not found: $backup_file"
exit 1
fi
log_warn "This will overwrite existing configuration!"
read -p "Continue? (y/N) " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
log_info "Restore cancelled."
exit 0
fi
log_info "Restoring from: $backup_file"
tar -xzvf "$backup_file" -C "$HOME"
log_info "Restore complete!"
}
# Clean old backups
cleanup_backups() {
log_info "Cleaning old backups (keeping last $MAX_BACKUPS)..."
cd "$BACKUP_ROOT" 2>/dev/null || return
local count=$(ls -1 *.tar.gz 2>/dev/null | wc -l)
if [ "$count" -gt "$MAX_BACKUPS" ]; then
local to_delete=$((count - MAX_BACKUPS))
ls -1t *.tar.gz | tail -n "$to_delete" | xargs rm -v
log_info "Removed $to_delete old backup(s)"
else
log_info "No cleanup needed ($count backups)"
fi
}
# Show backup stats
show_stats() {
log_info "ClawdBot Backup Statistics"
echo ""
echo "=== Directory Sizes ==="
du -sh "$CLAUDE_DIR"/skills 2>/dev/null || echo "Skills: N/A"
du -sh "$CLAUDE_DIR"/commands 2>/dev/null || echo "Commands: N/A"
du -sh "$CLAUDE_DIR"/mcp 2>/dev/null || echo "MCP: N/A"
du -sh "$CLAUDE_DIR" 2>/dev/null || echo "Total: N/A"
echo ""
echo "=== Skills Count ==="
find "$CLAUDE_DIR/skills" -name "SKILL.md" 2>/dev/null | wc -l | xargs echo "Skills:"
find "$CLAUDE_DIR/commands" -name "*.md" 2>/dev/null | wc -l | xargs echo "Commands:"
echo ""
echo "=== Backup Directory ==="
if [ -d "$BACKUP_ROOT" ]; then
du -sh "$BACKUP_ROOT"
ls -1 "$BACKUP_ROOT"/*.tar.gz 2>/dev/null | wc -l | xargs echo "Backup files:"
else
echo "No backups yet"
fi
}
# Usage
usage() {
cat \x3C\x3C EOF
ClawdBot Backup Tool
Usage: $(basename $0) \x3Ccommand> [options]
Commands:
backup [type] Create backup (types: full, skills, settings)
restore \x3Cfile> Restore from backup file
list List available backups
cleanup Remove old backups (keep last $MAX_BACKUPS)
stats Show backup statistics
help Show this help
Examples:
$(basename $0) backup # Full backup
$(basename $0) backup skills # Skills only
$(basename $0) restore latest.tar.gz
$(basename $0) list
$(basename $0) cleanup
Environment:
CLAWDBOT_BACKUP_DIR Backup directory (default: ~/clawdbot-backups)
EOF
}
# Main
main() {
check_claude_dir
case "${1:-help}" in
backup)
create_backup "${2:-full}"
;;
restore)
restore_backup "$2"
;;
list)
list_backups
;;
cleanup)
cleanup_backups
;;
stats)
show_stats
;;
help|--help|-h)
usage
;;
*)
log_error "Unknown command: $1"
usage
exit 1
;;
esac
}
main "$@"
Save and Use
# Save script
cat > ~/.local/bin/clawdbot-backup \x3C\x3C 'SCRIPT'
# Paste script content here
SCRIPT
chmod +x ~/.local/bin/clawdbot-backup
# Usage
clawdbot-backup backup # Full backup
clawdbot-backup backup skills # Skills only
clawdbot-backup list # List backups
clawdbot-backup restore \x3Cfile> # Restore
Git Version Control
Initialize Git Repo
cd ~/.claude
# Initialize git
git init
# Create .gitignore
cat > .gitignore \x3C\x3C 'EOF'
# Machine-specific settings
settings.local.json
# Cache and temp files
cache/
*.tmp
*.log
# Large files
*.tar.gz
*.zip
# Sensitive data (if any)
*.pem
*.key
credentials/
EOF
# Initial commit
git add .
git commit -m "Initial ClawdBot configuration backup"
Push to Remote
# Add remote (GitHub, GitLab, etc)
git remote add origin [email protected]:username/clawdbot-config.git
# Push
git push -u origin main
Daily Workflow
# After making changes to skills/settings
cd ~/.claude
git add .
git commit -m "Updated skill: trading-bot"
git push
Auto-Commit Script
#!/bin/bash
# auto-commit-claude.sh - Auto commit changes
cd ~/.claude || exit 1
# Check for changes
if git diff --quiet && git diff --staged --quiet; then
echo "No changes to commit"
exit 0
fi
# Get changed files for commit message
CHANGED=$(git status --short | head -5 | awk '{print $2}' | tr '\
' ', ')
git add .
git commit -m "Auto-backup: $CHANGED ($(date +%Y-%m-%d))"
git push 2>/dev/null || echo "Push failed (offline?)"
Sync Between Devices
Method 1: Git Sync
# On new device
git clone [email protected]:username/clawdbot-config.git ~/.claude
# Pull latest changes
cd ~/.claude && git pull
# Push local changes
cd ~/.claude && git add . && git commit -m "Update" && git push
Method 2: Rsync
# Sync to remote server
rsync -avz --delete \
~/.claude/ \
user@server:~/clawdbot-backup/
# Sync from remote server
rsync -avz --delete \
user@server:~/clawdbot-backup/ \
~/.claude/
Method 3: Cloud Storage
# Backup to cloud folder (Dropbox, Google Drive, etc)
CLOUD_DIR="$HOME/Dropbox/ClawdBot"
# Sync skills
rsync -avz ~/.claude/skills/ "$CLOUD_DIR/skills/"
rsync -avz ~/.claude/commands/ "$CLOUD_DIR/commands/"
# Copy settings
cp ~/.claude/settings.json "$CLOUD_DIR/"
Sync Script
#!/bin/bash
# sync-clawdbot.sh - Sync ClawdBot config between devices
SYNC_DIR="${CLAWDBOT_SYNC_DIR:-$HOME/Dropbox/ClawdBot}"
CLAUDE_DIR="$HOME/.claude"
sync_to_cloud() {
echo "Syncing to cloud..."
mkdir -p "$SYNC_DIR"
rsync -avz --delete "$CLAUDE_DIR/skills/" "$SYNC_DIR/skills/"
rsync -avz --delete "$CLAUDE_DIR/commands/" "$SYNC_DIR/commands/"
rsync -avz "$CLAUDE_DIR/mcp/" "$SYNC_DIR/mcp/" 2>/dev/null
cp "$CLAUDE_DIR/settings.json" "$SYNC_DIR/" 2>/dev/null
echo "Sync complete!"
}
sync_from_cloud() {
echo "Syncing from cloud..."
rsync -avz "$SYNC_DIR/skills/" "$CLAUDE_DIR/skills/"
rsync -avz "$SYNC_DIR/commands/" "$CLAUDE_DIR/commands/"
rsync -avz "$SYNC_DIR/mcp/" "$CLAUDE_DIR/mcp/" 2>/dev/null
# Don't overwrite local settings by default
if [ ! -f "$CLAUDE_DIR/settings.json" ]; then
cp "$SYNC_DIR/settings.json" "$CLAUDE_DIR/" 2>/dev/null
fi
echo "Sync complete!"
}
case "$1" in
push) sync_to_cloud ;;
pull) sync_from_cloud ;;
*)
echo "Usage: $0 {push|pull}"
echo " push - Upload local config to cloud"
echo " pull - Download cloud config to local"
;;
esac
Automated Backups
Cron Job (Linux/Mac)
# Edit crontab
crontab -e
# Add daily backup at 2 AM
0 2 * * * /home/user/.local/bin/clawdbot-backup backup full
# Add weekly cleanup on Sundays
0 3 * * 0 /home/user/.local/bin/clawdbot-backup cleanup
# Add git auto-commit every 6 hours
0 */6 * * * cd ~/.claude && git add . && git commit -m "Auto-backup $(date +\%Y-\%m-\%d)" && git push 2>/dev/null
Systemd Timer (Linux)
# Create service: ~/.config/systemd/user/clawdbot-backup.service
cat > ~/.config/systemd/user/clawdbot-backup.service \x3C\x3C 'EOF'
[Unit]
Description=ClawdBot Backup
[Service]
Type=oneshot
ExecStart=/home/user/.local/bin/clawdbot-backup backup full
EOF
# Create timer: ~/.config/systemd/user/clawdbot-backup.timer
cat > ~/.config/systemd/user/clawdbot-backup.timer \x3C\x3C 'EOF'
[Unit]
Description=Daily ClawdBot Backup
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
EOF
# Enable
systemctl --user enable clawdbot-backup.timer
systemctl --user start clawdbot-backup.timer
Launchd (macOS)
# Create plist: ~/Library/LaunchAgents/com.clawdbot.backup.plist
cat > ~/Library/LaunchAgents/com.clawdbot.backup.plist \x3C\x3C 'EOF'
\x3C?xml version="1.0" encoding="UTF-8"?>
\x3C!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
\x3Cplist version="1.0">
\x3Cdict>
\x3Ckey>Label\x3C/key>
\x3Cstring>com.clawdbot.backup\x3C/string>
\x3Ckey>ProgramArguments\x3C/key>
\x3Carray>
\x3Cstring>/Users/username/.local/bin/clawdbot-backup\x3C/string>
\x3Cstring>backup\x3C/string>
\x3Cstring>full\x3C/string>
\x3C/array>
\x3Ckey>StartCalendarInterval\x3C/key>
\x3Cdict>
\x3Ckey>Hour\x3C/key>
\x3Cinteger>2\x3C/integer>
\x3Ckey>Minute\x3C/key>
\x3Cinteger>0\x3C/integer>
\x3C/dict>
\x3C/dict>
\x3C/plist>
EOF
# Load
launchctl load ~/Library/LaunchAgents/com.clawdbot.backup.plist
Migration Guide
Migrate to New Machine
# === On OLD machine ===
# 1. Create full backup
clawdbot-backup backup full
# 2. Copy backup file to new machine
scp ~/clawdbot-backups/clawdbot_full_*.tar.gz newmachine:~/
# Or use git
cd ~/.claude
git add . && git commit -m "Pre-migration backup"
git push
# === On NEW machine ===
# Method A: From backup file
tar -xzvf ~/clawdbot_full_*.tar.gz -C ~
# Method B: From git
git clone [email protected]:username/clawdbot-config.git ~/.claude
# 3. Verify
ls -la ~/.claude/skills/
Export Single Skill
# Export one skill for sharing
SKILL_NAME="my-awesome-skill"
tar -czvf "${SKILL_NAME}.tar.gz" -C ~/.claude/skills "$SKILL_NAME"
# Import skill
tar -xzvf "${SKILL_NAME}.tar.gz" -C ~/.claude/skills/
Export All Skills for Sharing
# Create shareable skills bundle (no personal settings)
tar -czvf clawdbot-skills-share.tar.gz \
-C ~/.claude \
skills \
--exclude='*.local*' \
--exclude='*personal*'
Backup Verification
Verify Backup Integrity
# Test backup without extracting
tar -tzvf backup.tar.gz > /dev/null && echo "Backup OK" || echo "Backup CORRUPT"
# List contents
tar -tzvf backup.tar.gz
# Verify specific file exists
tar -tzvf backup.tar.gz | grep "skills/my-skill/SKILL.md"
Compare Backup to Current
# Extract to temp dir
TEMP_DIR=$(mktemp -d)
tar -xzf backup.tar.gz -C "$TEMP_DIR"
# Compare
diff -rq ~/.claude/skills "$TEMP_DIR/.claude/skills"
# Cleanup
rm -rf "$TEMP_DIR"
Troubleshooting
Common Issues
# Issue: Permission denied
chmod -R u+rw ~/.claude
# Issue: Backup too large
# Exclude cache and logs
tar --exclude='cache' --exclude='*.log' -czvf backup.tar.gz ~/.claude
# Issue: Restore overwrote settings
# Keep settings.local.json for machine-specific config
# It won't be overwritten if using proper backup
# Issue: Git conflicts after sync
cd ~/.claude
git stash
git pull
git stash pop
# Resolve conflicts manually if needed
Recovery from Corruption
# If ~/.claude is corrupted
# 1. Move corrupted dir
mv ~/.claude ~/.claude.corrupted
# 2. Restore from backup
clawdbot-backup restore latest.tar.gz
# 3. Or restore from git
git clone [email protected]:username/clawdbot-config.git ~/.claude
# 4. Compare and recover anything missing
diff -rq ~/.claude ~/.claude.corrupted/
Quick Reference
Essential Commands
# Backup
tar -czvf ~/clawdbot-backup.tar.gz -C ~ .claude/skills .claude/commands .claude/settings.json
# Restore
tar -xzvf ~/clawdbot-backup.tar.gz -C ~
# List backup contents
tar -tzvf ~/clawdbot-backup.tar.gz
# Git backup
cd ~/.claude && git add . && git commit -m "Backup" && git push
# Git restore
cd ~/.claude && git pull
Backup Checklist
Before major changes:
□ Create backup
□ Verify backup integrity
□ Note what you're changing
Regular maintenance:
□ Weekly full backup
□ Daily git commits (if using)
□ Monthly cleanup of old backups
□ Test restore procedure quarterly
Resources
Related Skills
- skill-creator - Create new skills
- mcp-builder - Configure MCP servers
- dotfiles - General dotfile management
Documentation
- ClawdBot Docs: docs.clawdbot.com
- Skills Guide: docs.clawdbot.com/skills
- MCP Setup: docs.clawdbot.com/mcp
Tip: Always test your backup restoration process before you actually need it. A backup you can't restore is worthless!
安全使用建议
Use this skill if you intentionally want to back up or restore ClawdBot state. Keep backup archives private, consider encryption, avoid public git remotes for backups that may include contexts or settings, and restore only archives you trust after previewing their contents.
功能分析
Type: OpenClaw Skill
Name: clawdbot-backup
Version: 1.0.0
The OpenClaw AgentSkills skill bundle 'clawdbot-backup' is classified as benign. The skill's purpose is to backup, restore, sync, and version control ClawdBot configurations. All provided scripts and instructions (using `tar`, `git`, `rsync`, `cron`, `systemd`, `launchd`) operate strictly within the `~/.claude/` directory and user-defined backup locations. There is no evidence of data exfiltration to unauthorized external endpoints, malicious execution of remote payloads, obfuscation, or prompt injection attempts to subvert the agent's intended purpose. Persistence mechanisms (cron, systemd, launchd) are explicitly for automating the stated backup and sync functions, not for stealthy unauthorized access. Network operations (git, rsync) rely on user-configured remotes, not hardcoded malicious ones.
能力评估
Purpose & Capability
The backup, restore, sync, and migration capabilities match the stated purpose, but they cover high-impact agent state such as skills, commands, settings, MCP configuration, and saved contexts.
Instruction Scope
The commands are presented as user-directed examples, and the restore flow says to preview contents first, but the restore operation is broad and explicitly overwrites existing ClawdBot files.
Install Mechanism
There is no install script or executable code; the skill is instruction-only and declares expected local tools: git, tar, and rsync.
Credentials
Access to ~/.claude and optional project .claude folders is proportionate for a ClawdBot backup skill, but those paths may contain private configuration, saved context, and integration details.
Persistence & Privilege
The skill creates persistent backup archives and supports sync/version-control workflows, but no privileged install, hidden background service, or automatic persistence mechanism is shown.
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install clawdbot-backup - 安装完成后,直接呼叫该 Skill 的名称或使用
/clawdbot-backup触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
clawdbot-backup 1.0.0 – Initial public release
- Backs up and restores ClawdBot configuration, skills, commands, and settings.
- Supports syncing across devices and version control integration with git.
- Provides full-featured and quick backup scripts for skills, settings, and full backups.
- Automates backup routines and cleanup of old backups.
- Enables migration to new machines and restores from archive files.
元数据
常见问题
Clawdbot Backup 是什么?
Backup and restore ClawdBot configuration, skills, commands, and settings. Sync across devices, version control with git, automate backups, and migrate to new machines. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 4271 次。
如何安装 Clawdbot Backup?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install clawdbot-backup」即可一键安装,无需额外配置。
Clawdbot Backup 是免费的吗?
是的,Clawdbot Backup 完全免费(开源免费),可自由下载、安装和使用。
Clawdbot Backup 支持哪些平台?
Clawdbot Backup 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Clawdbot Backup?
由 Sebastian-Buitrag0(@sebastian-buitrag0)开发并维护,当前版本 v1.0.0。
推荐 Skills