openclaw-backup

安装量: 310
排名: #2974

安装

npx skills add https://github.com/theagentservice/skills --skill openclaw-backup
OpenClaw Backup Skill
Automated encrypted backup and restore for OpenClaw Agent workspace files using Claude Code.
Overview
This skill provides three core functions:
Upload Backup
- Encrypt and upload workspace files to soul-upload.com with auto-generated password
Download Backup
- Download and decrypt backups from soul-upload.com using stored password
Delete Backup
- Delete backups from remote storage
All backups use
AES-256-CBC encryption
(via openssl) with
auto-generated random passwords
. Each backup gets a unique password that is stored in the recovery file.
System Requirements
Before executing backup operations, ensure the following tools are installed:
Python 3.7+
(script runtime environment)
requests library
(
pip install requests
)
tar
(file archiving)
openssl
(encryption/decryption)
curl
(HTTP requests, system built-in)
Default Backup Files
If the user doesn't specify files, the following OpenClaw workspace files are backed up by default:
SOUL.md
- Agent core identity and goals
MEMORY.md
- Agent memory and context
IDENTITY.md
- Agent identity definition
AGENTS.md
- Agent configuration
TOOLS.md
- Tool configuration
Workflow 1: Upload Backup
Trigger Scenarios
Execute when the user requests to backup workspace files:
"Back up my workspace files"
"Upload SOUL.md to soul-upload"
"Create an encrypted backup of my agent files"
"Backup SOUL.md and MEMORY.md"
Execution Steps
Collect File List
If user specified files, use the user-specified files
Otherwise, use default list:
SOUL.md MEMORY.md IDENTITY.md AGENTS.md TOOLS.md
Use Read tool to verify files exist
Execute Backup Script
(Password Auto-Generated)
Locate script path (usually
scripts/backup.py
in Skill directory)
Execute command WITHOUT --password argument (script will auto-generate):
python3 scripts/backup.py upload
\
--files
"SOUL.md MEMORY.md IDENTITY.md"
Script automatically generates a 32-character random password
Capture stdout (JSON response) and stderr (progress info including generated password)
Process Response
On success, script outputs JSON:
{
"backupId"
:
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
,
"downloadUrl"
:
"https://soul-upload.com/backup/..."
,
"sizeBytes"
:
12345
,
"sha256"
:
"abc123..."
,
"password"
:
"auto-generated-32-char-random-password"
}
Parse JSON and extract key information including the auto-generated password
Save Recovery Information
Use Write tool to create/update
.openclaw-backup-recovery.txt
CRITICAL
Include the auto-generated password in the recovery file Format: Backup ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Password: auto-generated-32-char-random-password Download URL: https://soul-upload.com/backup/... Created: 2024-01-15 10:30:00 UTC Size: 12.05 KB SHA256: abc123... Files: SOUL.md, MEMORY.md, IDENTITY.md

Append to end of file (preserve history)
Display Success Message
Inform user backup is complete
Show Backup ID and file size
IMPORTANT
Inform user that password was auto-generated and saved to
.openclaw-backup-recovery.txt
Warn user: Recovery file is CRITICAL - without it, backup cannot be restored
Error Handling
Error Scenario
Detection
User Guidance
Files not found
Script returns error: "Files not found: ..."
List missing files, ask if user wants to continue backing up other files
Files too large
Script returns error: "Backup size ... exceeds limit ..."
Show actual size, suggest removing large files or splitting backup
Network error
Script returns error: "Network error: ..."
Suggest checking network connection, ask if retry is wanted
413 Too Large
Script returns error: "File too large (413 Payload Too Large)"
Indicate 20MB limit exceeded, suggest reducing backup size
Encryption failed
Script returns error: "openssl encryption failed: ..."
Check if openssl is properly installed
Example Conversation
User: Back up my SOUL.md and MEMORY.md
Claude: I'll backup these files with auto-generated encryption.
[Executes backup script]
Backup complete!
- Backup ID: 3f8a2b1c-...
- Size: 45.2 KB
- Password: Auto-generated (32 chars)
- Recovery info saved to .openclaw-backup-recovery.txt
IMPORTANT: Keep .openclaw-backup-recovery.txt safe!
It contains the password needed to restore this backup.
Workflow 2: Download Backup
Trigger Scenarios
Execute when user requests to restore backup:
"Restore my backup"
"Download my last backup"
"Recover backup [backup-id]"
"Restore from [download-url]"
Execution Steps
Get Backup ID and Password
Check if user provided Backup ID or Download URL
If not provided, use Read tool to read
.openclaw-backup-recovery.txt
Extract latest Backup ID AND password from file
If file doesn't exist or is empty, cannot proceed (password unknown)
Determine Output Directory
Default: Current working directory (
.
)
If user specified a directory, use user-specified directory
Warn user: Existing files may be overwritten
Execute Restore Script
Execute command with password from recovery file:
python3 scripts/backup.py download
\
--backup-id
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
\
--password
"password-from-recovery-file"
\
--output-dir
"."
Capture stdout (JSON response) and stderr (progress info)
Process Response
On success, script outputs JSON:
{
"success"
:
true
,
"extractedFiles"
:
[
"SOUL.md"
,
"MEMORY.md"
,
"IDENTITY.md"
]
,
"outputDir"
:
"/path/to/output"
}
Parse extracted file list
Verify Restoration Result
Use Read tool to read first few lines of restored files
Show file preview for user to confirm content is correct
Remind user to check complete content
Display Success Message
List restored files
Show output directory
Suggest user verify file content
Error Handling
Error Scenario
Detection
User Guidance
Backup ID doesn't exist
Script returns error: "Backup not found: ..."
Check if Backup ID is correct, may have been deleted
Recovery file missing
.openclaw-backup-recovery.txt
not found
Cannot restore - password is unknown without recovery file
Wrong password
Script returns error: "Decryption failed - wrong password ..."
Recovery file may be corrupted or from different backup
Network error
Script returns error: "Network error: ..."
Suggest checking network connection, ask if retry is wanted
Extraction failed
Script returns error: "tar extraction failed: ..."
File may be corrupted, try downloading again
Example Conversation
User: Restore my last backup
Claude: I found the most recent backup in .openclaw-backup-recovery.txt
- Backup ID: 3f8a2b1c-...
- Created: 2024-01-15 10:30:00 UTC
Downloading and decrypting backup...
Restoration complete! Extracted the following files:
- SOUL.md
- MEMORY.md
- IDENTITY.md
Files saved to current directory, please verify content is correct.
Workflow 3: Delete Backup
Trigger Scenarios
Execute when user requests to delete remote backup:
"Delete my backup"
"Remove backup [backup-id]"
"Delete the backup from soul-upload"
Execution Steps
Get Backup ID
Check if user provided Backup ID
If not provided, use Read tool to read
.openclaw-backup-recovery.txt
Show available backup list for user to select
If file doesn't exist or is empty, ask user to provide Backup ID
Request Confirmation
Warning: This operation is irreversible, backup will be permanently deleted
Show Backup ID to delete and creation time
Ask user to confirm deletion
Execute Delete Script
After user confirms, execute command:
python3 scripts/backup.py delete
\
--backup-id
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Capture stdout (JSON response) and stderr (progress info)
Process Response
On success, script outputs JSON:
{
"success"
:
true
,
"backupId"
:
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Update Recovery Info File
Use Read tool to read
.openclaw-backup-recovery.txt
Remove deleted backup record (including its password)
Use Write tool to save updated file
If file becomes empty, can delete the file
Display Success Message
Confirm backup was deleted
Show deleted Backup ID
Remind user: If backup is needed again, must create new one with new password
Error Handling
Error Scenario
Detection
User Guidance
Backup ID doesn't exist
Script returns error: "Backup not found: ..."
Backup may have been deleted or ID is incorrect
Network error
Script returns error: "Network error: ..."
Suggest checking network connection, ask if retry is wanted
User cancels
User declines confirmation
Operation cancelled, backup not deleted
Example Conversation
User: Delete my backup
Claude: I found the following backups in .openclaw-backup-recovery.txt:
1. Backup ID: 3f8a2b1c-... (2024-01-15 10:30:00)
2. Backup ID: 7b2c9d4e-... (2024-01-14 08:20:00)
Which backup would you like to delete? (1 or 2)
User: 1
Claude: Warning: This will permanently delete backup 3f8a2b1c-...
This action cannot be undone. Confirm deletion? (yes/no)
User: yes
Claude: Backup deleted.
- Backup ID: 3f8a2b1c-...
To backup again, create a new backup with a new auto-generated password.
Security Notes
Password Policy (NEW)
Auto-Generated Passwords
Each backup gets a unique 32-character random password
Never Reuse Passwords
Per soul-upload.com policy, do NOT reuse passwords across backups
Password Storage
Password is stored in
.openclaw-backup-recovery.txt
(necessary for decryption)
User Responsibility
Users must keep recovery file safe - without it, backup cannot be restored
Recovery File Security
File Location
:
.openclaw-backup-recovery.txt
(workspace root directory)
Content
Backup ID, Password (CRITICAL), Download URL, timestamp, SHA256
CRITICAL
Recovery file is the ONLY place password is stored
Recommendation
:
Add to
.gitignore
if sensitive
OR commit to version control for team access
Consider backing up recovery file itself to separate secure location
Encryption Algorithm
Algorithm
AES-256-CBC (symmetric encryption)
Salting
openssl automatically adds salt for enhanced security
Compatibility
Consistent with soul-upload.com official documentation
Temporary File Cleanup
Script uses try-finally to ensure temporary files are cleaned up
Avoids leaving unencrypted sensitive data on disk
File Size Limits
Maximum Backup Size
20 MB (compressed and encrypted)
Check Timing
Automatically checked before upload
Limit Exceeded Handling
Show actual size, suggest user:
Remove large files (like logs, caches)
Split backup (backup different files in batches)
API Reference
soul-upload.com Backup API:
Endpoint
Method
Function
Response
/backup
POST
Upload backup
{backupId, downloadUrl, sizeBytes, sha256}
/backup/:backupId
GET
Download backup
302 redirect to R2 storage URL
/backup/:backupId
DELETE
Delete backup
{success: true, backupId}
Common Status Codes:
200
- Success
404
- Backup not found
413
- File too large (exceeds 20MB)
415
- Unsupported file type
500
- Server error
Troubleshooting
Missing Dependencies
Problem
Script error "Missing required tools: tar, openssl"
Solution
:
macOS:
brew install openssl
(tar built-in)
Ubuntu/Debian:
sudo apt-get install tar openssl
Verify installation:
tar --version
and
openssl version
Python requests Library Missing
Problem
Script error "Error: 'requests' library not found" Solution : pip install requests

or

pip3
install
requests
Recovery File Lost
Problem
Cannot restore backup - recovery file missing
Solution
:
Recovery file is CRITICAL - contains the only copy of the password
Without recovery file, backup CANNOT be restored
Recommend backing up recovery file to separate secure location
If lost, backup is permanently inaccessible
Network Timeout
Problem
Timeout during upload/download
Solution
:
Check network connection
Reduce backup file size (remove unnecessary files)
Script default timeout is 5 minutes, usually sufficient
File Already Exists
Problem
Overwriting existing files during restore
Solution
:
Backup existing files before restore
Specify different output directory
Manually move existing files to other location
Usage Examples
Example 1: Backup All Default Files
User: Back up my workspace files
Claude: [Execute upload workflow using default file list]
[Auto-generate password and save to recovery file]
Example 2: Backup Specific Files
User: Back up only SOUL.md and MEMORY.md
Claude: [Execute upload workflow, backup only specified files]
[Auto-generate password and save to recovery file]
Example 3: Restore Latest Backup
User: Restore my last backup
Claude: [Read latest Backup ID and password from .openclaw-backup-recovery.txt]
[Execute download workflow]
Example 4: Restore Specific Backup
User: Restore backup 3f8a2b1c-1234-5678-90ab-cdef12345678
Claude: [Read password for this Backup ID from recovery file]
[Execute download workflow]
Example 5: Delete Old Backups
User: Delete my old backups
Claude: [Show available backup list from recovery file]
[User selects backup to delete]
[Execute delete workflow]
[Remove entry from recovery file]
Best Practices
Regular Backups
Recommend weekly backups or after important changes
Recovery File Management
Keep
.openclaw-backup-recovery.txt
safe and backed up separately
Verify Restoration
Regularly test backup restoration process to ensure backups are usable
Clean Old Backups
Regularly delete unneeded old backups to save storage space
Multiple Copies
Consider keeping recovery file in multiple secure locations
Script Path
Script file is located in Skill directory at
scripts/backup.py
.
When executing Bash commands, ensure correct relative or absolute path is used. Usually:
If currently in Skill directory:
python3 scripts/backup.py ...
If in other directory: Use absolute path or
cd
to Skill directory first
Reference Documentation
soul-upload.com Backup Guide
soul-upload.com Restore Guide
OpenClaw Agent Documentation
Version
2.0.0
Author
Claude Code
License
MIT
Password Policy
Auto-generated unique password per backup (NEW in v2.0.0)
返回排行榜