| name | backupclaw |
| description | Backup and restore OpenClaw configuration files. Use when the user wants to backup ~/.openclaw/ configuration (excluding workspace) to a date-stamped directory, or restore from a previous backup. Includes backup with diff-based change detection and changelog logging, and restore by date. The backup directory path ($backup_claw_dir) must be obtained from the user before first use. |
Backupclaw
Overview
Full backup and restore capability for OpenClaw configuration files. Backups are stored in date-stamped directories (YYYY-MM-DD format). Only performs backup when configuration has actually changed.
Core Operations
0. Backup Directory Management (NEW)
Configuration file:
Get backup directory:
- Check if
~/.openclaw/backup.json exists
- If exists, read "backup_location" field
- If missing or file doesn't exist:
- Ask user for backup directory path
- Create
~/.openclaw/backup.json with the provided path
- Confirm path to user
Change backup directory (changedir command):
When user runs backupclaw changedir <new_path>:
- Validate new path exists and is writable
- Update
~/.openclaw/backup.json with new path
- Inform user of successful change
Example changedir usage:
- "backupclaw changedir ~/backups/openclaw"
- "修改备份目录到 /mnt/backup/openclaw"
1. Backup Configuration
Backup directory setup:
- Get backup directory using the management flow above (Section 0)
- No longer store in TOOLS.md; use backup.json instead
Backup process:
- Generate current date string in YYYY-MM-DD format
- If backup directory has no previous backups:
- Copy all files from
~/.openclaw/ to $backup_claw_dir/YYYY-MM-DD/, excluding workspace/
- Record initial backup in changelog
- If previous backups exist:
- Find the most recent backup directory (latest date)
- Compare files between latest backup and current
~/.openclaw/ using diff
- If no changes detected: Tell user "配置文件没有变化,不需要备份"
- If changes detected:
- Create new date-stamped directory
- Copy all files from
~/.openclaw/ to new directory, excluding workspace/
- Update changelog with list of modified files
- Report changes to user
Changelog format:
Exclusion rules:
- Always exclude
workspace/ directory from backup
- Preserve directory structure for all other files
2. Restore Configuration
Restore process:
- Accept date parameter in YYYY-MM-DD format
- Verify backup directory exists at
$backup_claw_dir/YYYY-MM-DD/
- If backup not found, inform user and list available dates
- If backup found:
- Warn user about overwriting current configuration
- Confirm before proceeding
- Restore files from backup to
~/.openclaw/
- Exclude
workspace/ from restoration
- Report success and list restored files
Usage Examples
Typical user requests that trigger this skill:
- "backup my openclaw config"
- "restore openclaw backup from 2026-03-12"
- "check if config changed"
- "备份 openclaw 配置"
- "恢复 2026-03-12 的备份"
- "backupclaw changedir ~/backups/openclaw"
- "修改备份目录" (prompts for new path)
Implementation Notes
Tools to use:
rsync or cp -r for copying files
diff for comparing file contents
find with sort and tail to find latest backup
- Date command:
date +%Y-%m-%d
read and write tools for managing ~/.openclaw/backup.json
Backup directory management:
- Always check
~/.openclaw/backup.json first before asking user
- Only prompt for backup path if backup_location is not set
- Validate directory exists and is writable before saving
- Use
write tool to create/update backup.json
changedir command handling:
- Parse command format:
backupclaw changedir <path> or equivalent Chinese phrasing
- Validate new directory exists and is writable (create if doesn't exist, ask first)
- Update backup.json with new path
- Confirm successful change to user
Backup directory structure:
$backup_claw_dir/
├── 2026-03-12/
│ ├── openclaw.json
│ ├── agents/
│ ├── extensions/
│ └── ...
├── 2026-03-13/
│ └── ...
└── changelog.md
Error handling:
- Always verify backup directory exists and is writable before proceeding
- Check for sufficient disk space
- Validate date format for restore operation
- Provide clear error messages in Chinese when appropriate