← 返回 Skills 市场
halaoluan

Openclaw Backup

作者 halaoluan · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
281
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install halaoluan-openclaw-backup
功能描述
定期备份和加密保护 OpenClaw 数据,支持手动执行、定时调度及备份文件云端同步和校验。
使用说明 (SKILL.md)

OpenClaw 备份 Skill

自动备份 OpenClaw 核心数据,支持加密、定时、云同步。


使用场景

触发词 操作
"备份 OpenClaw" 立即创建备份
"定时备份" 配置 cron 自动备份
"加密备份" 创建密码保护的备份
"备份到云盘" 备份后同步到云端
"查看备份" 列出所有备份文件

核心脚本

1. 基础备份(无加密)

位置:scripts/backup.sh

#!/bin/bash
set -euo pipefail

# 参数
BACKUP_ROOT="${OPENCLAW_BACKUP_DIR:-$HOME/Desktop/OpenClaw_Backups}"
DATE_STR="$(date +"%Y-%m-%d_%H-%M-%S")"
TMP_DIR="/tmp/openclaw_backup_$DATE_STR"
ARCHIVE_NAME="openclaw_backup_$DATE_STR.tar.gz"

# 数据目录
STATE_DIR_NEW="$HOME/.openclaw"
STATE_DIR_OLD="$HOME/.clawdbot"

mkdir -p "$BACKUP_ROOT"
mkdir -p "$TMP_DIR"

echo "🐈‍⬛ OpenClaw 备份开始..."
echo "备份目标: $BACKUP_ROOT"

FOUND_ANY=0

# 备份 ~/.openclaw
if [ -d "$STATE_DIR_NEW" ]; then
    echo "✓ 发现: $STATE_DIR_NEW"
    cp -a "$STATE_DIR_NEW" "$TMP_DIR/"
    FOUND_ANY=1
fi

# 备份 ~/.clawdbot(旧版兼容)
if [ -d "$STATE_DIR_OLD" ]; then
    echo "✓ 发现: $STATE_DIR_OLD"
    cp -a "$STATE_DIR_OLD" "$TMP_DIR/"
    FOUND_ANY=1
fi

if [ "$FOUND_ANY" -eq 0 ]; then
    echo "❌ 未找到 OpenClaw 数据目录"
    rm -rf "$TMP_DIR"
    exit 1
fi

# 停止网关(可选)
if command -v openclaw >/dev/null 2>&1; then
    echo "⏸  停止 OpenClaw 网关..."
    openclaw gateway stop 2>/dev/null || true
    sleep 2
fi

# 打包
echo "📦 打包中..."
tar -czf "$BACKUP_ROOT/$ARCHIVE_NAME" -C "$TMP_DIR" .

# 生成校验文件
echo "🔐 生成 SHA256 校验..."
shasum -a 256 "$BACKUP_ROOT/$ARCHIVE_NAME" > "$BACKUP_ROOT/$ARCHIVE_NAME.sha256"

# 清理
rm -rf "$TMP_DIR"

# 重启网关
if command -v openclaw >/dev/null 2>&1; then
    echo "▶️  重启 OpenClaw 网关..."
    openclaw gateway start 2>/dev/null || true
fi

echo ""
echo "✅ 备份完成!"
echo "📁 位置: $BACKUP_ROOT/$ARCHIVE_NAME"
echo "🔐 校验: $BACKUP_ROOT/$ARCHIVE_NAME.sha256"
echo ""
echo "建议操作:"
echo "1. 复制到移动硬盘"
echo "2. 上传到云盘(建议加密)"
echo "3. 定期验证备份完整性"

2. 加密备份(推荐)

位置:scripts/backup_encrypted.sh

#!/bin/bash
set -euo pipefail

# 参数
BACKUP_ROOT="${OPENCLAW_BACKUP_DIR:-$HOME/Desktop/OpenClaw_Backups}"
DATE_STR="$(date +"%Y-%m-%d_%H-%M-%S")"
TMP_DIR="/tmp/openclaw_backup_$DATE_STR"
ARCHIVE_NAME="openclaw_backup_$DATE_STR.tar.gz"
ENCRYPTED_NAME="openclaw_backup_$DATE_STR.tar.gz.enc"

STATE_DIR_NEW="$HOME/.openclaw"
STATE_DIR_OLD="$HOME/.clawdbot"

mkdir -p "$BACKUP_ROOT"
mkdir -p "$TMP_DIR"

echo "🐈‍⬛ OpenClaw 加密备份开始..."

# 检查密码
if [ -z "${OPENCLAW_BACKUP_PASSWORD:-}" ]; then
    echo "请输入备份密码(至少8位):"
    read -s BACKUP_PASSWORD
    echo ""
    echo "请再次输入密码:"
    read -s BACKUP_PASSWORD_CONFIRM
    echo ""
    
    if [ "$BACKUP_PASSWORD" != "$BACKUP_PASSWORD_CONFIRM" ]; then
        echo "❌ 密码不匹配"
        exit 1
    fi
    
    if [ ${#BACKUP_PASSWORD} -lt 8 ]; then
        echo "❌ 密码至少8位"
        exit 1
    fi
else
    BACKUP_PASSWORD="$OPENCLAW_BACKUP_PASSWORD"
fi

FOUND_ANY=0

if [ -d "$STATE_DIR_NEW" ]; then
    echo "✓ 发现: $STATE_DIR_NEW"
    cp -a "$STATE_DIR_NEW" "$TMP_DIR/"
    FOUND_ANY=1
fi

if [ -d "$STATE_DIR_OLD" ]; then
    echo "✓ 发现: $STATE_DIR_OLD"
    cp -a "$STATE_DIR_OLD" "$TMP_DIR/"
    FOUND_ANY=1
fi

if [ "$FOUND_ANY" -eq 0 ]; then
    echo "❌ 未找到数据目录"
    rm -rf "$TMP_DIR"
    exit 1
fi

# 停止网关
if command -v openclaw >/dev/null 2>&1; then
    echo "⏸  停止网关..."
    openclaw gateway stop 2>/dev/null || true
    sleep 2
fi

# 打包
echo "📦 打包中..."
tar -czf "/tmp/$ARCHIVE_NAME" -C "$TMP_DIR" .

# 加密(使用 openssl aes-256-cbc)
echo "🔐 加密中..."
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 \
    -in "/tmp/$ARCHIVE_NAME" \
    -out "$BACKUP_ROOT/$ENCRYPTED_NAME" \
    -pass pass:"$BACKUP_PASSWORD"

# 生成校验
shasum -a 256 "$BACKUP_ROOT/$ENCRYPTED_NAME" > "$BACKUP_ROOT/$ENCRYPTED_NAME.sha256"

# 清理
rm -f "/tmp/$ARCHIVE_NAME"
rm -rf "$TMP_DIR"

# 重启网关
if command -v openclaw >/dev/null 2>&1; then
    echo "▶️  重启网关..."
    openclaw gateway start 2>/dev/null || true
fi

echo ""
echo "✅ 加密备份完成!"
echo "📁 位置: $BACKUP_ROOT/$ENCRYPTED_NAME"
echo "🔐 校验: $BACKUP_ROOT/$ENCRYPTED_NAME.sha256"
echo ""
echo "⚠️  请妥善保管密码!丢失密码将无法恢复数据。"
echo ""
echo "解密方法:"
echo "openssl enc -aes-256-cbc -d -pbkdf2 -iter 100000 \\"
echo "  -in $ENCRYPTED_NAME \\"
echo "  -out openclaw_backup.tar.gz \\"
echo "  -pass pass:YOUR_PASSWORD"

3. 定时备份配置

位置:scripts/setup_cron.sh

#!/bin/bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKUP_SCRIPT="${OPENCLAW_BACKUP_SCRIPT:-$SCRIPT_DIR/backup_encrypted.sh}"

echo "🐈‍⬛ 配置 OpenClaw 定时备份"
echo ""
echo "选择备份频率:"
echo "1. 每天 23:00"
echo "2. 每周日 21:00"
echo "3. 每月1日 20:00"
echo "4. 自定义"
echo ""
read -p "请选择 [1-4]: " CHOICE

case $CHOICE in
    1)
        CRON_EXPR="0 23 * * *"
        DESC="每天 23:00"
        ;;
    2)
        CRON_EXPR="0 21 * * 0"
        DESC="每周日 21:00"
        ;;
    3)
        CRON_EXPR="0 20 1 * *"
        DESC="每月1日 20:00"
        ;;
    4)
        echo "请输入 cron 表达式(如 '0 2 * * *' 代表每天凌晨2点):"
        read -p "> " CRON_EXPR
        DESC="自定义: $CRON_EXPR"
        ;;
    *)
        echo "❌ 无效选择"
        exit 1
        ;;
esac

# 检查是否已有任务
if crontab -l 2>/dev/null | grep -q "openclaw.*backup"; then
    echo ""
    echo "⚠️  发现已有 OpenClaw 备份任务,是否覆盖?[y/N]"
    read -p "> " CONFIRM
    if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then
        echo "取消操作"
        exit 0
    fi
    
    # 移除旧任务
    crontab -l 2>/dev/null | grep -v "openclaw.*backup" | crontab -
fi

# 添加新任务
(crontab -l 2>/dev/null; echo "$CRON_EXPR $BACKUP_SCRIPT >> /tmp/openclaw_backup.log 2>&1") | crontab -

echo ""
echo "✅ 定时备份已配置"
echo "📅 频率: $DESC"
echo "📜 脚本: $BACKUP_SCRIPT"
echo ""
echo "查看所有定时任务: crontab -l"
echo "查看备份日志: tail -f /tmp/openclaw_backup.log"

4. 列出备份

位置:scripts/list_backups.sh

#!/bin/bash
set -euo pipefail

BACKUP_ROOT="${OPENCLAW_BACKUP_DIR:-$HOME/Desktop/OpenClaw_Backups}"

echo "🐈‍⬛ OpenClaw 备份列表"
echo "位置: $BACKUP_ROOT"
echo ""

if [ ! -d "$BACKUP_ROOT" ]; then
    echo "❌ 备份目录不存在"
    exit 1
fi

cd "$BACKUP_ROOT"

# 统计
TOTAL_FILES=$(ls -1 openclaw_backup_*.tar.gz* 2>/dev/null | grep -v ".sha256" | wc -l | tr -d ' ')
TOTAL_SIZE=$(du -sh . | cut -f1)

echo "📦 共 $TOTAL_FILES 个备份文件,总计 $TOTAL_SIZE"
echo ""

# 列出文件
ls -lht openclaw_backup_*.tar.gz* 2>/dev/null | grep -v ".sha256" | while read -r line; do
    SIZE=$(echo "$line" | awk '{print $5}')
    DATE=$(echo "$line" | awk '{print $6, $7, $8}')
    FILE=$(echo "$line" | awk '{print $9}')
    
    # 检查是否加密
    if [[ "$FILE" == *.enc ]]; then
        ENCRYPTED="🔐 加密"
    else
        ENCRYPTED="📂 未加密"
    fi
    
    # 检查校验文件
    if [ -f "$FILE.sha256" ]; then
        CHECKSUM="✓"
    else
        CHECKSUM="✗"
    fi
    
    echo "[$ENCRYPTED] $FILE"
    echo "  大小: $SIZE | 日期: $DATE | 校验: $CHECKSUM"
    echo ""
done

echo "验证备份完整性:"
echo "  shasum -c openclaw_backup_XXXX.tar.gz.sha256"

使用方法

方式1:直接调用脚本

# 普通备份
bash ~/.openclaw/skills/openclaw-backup/scripts/backup.sh

# 加密备份(推荐)
bash ~/.openclaw/skills/openclaw-backup/scripts/backup_encrypted.sh

# 配置定时备份
bash ~/.openclaw/skills/openclaw-backup/scripts/setup_cron.sh

# 查看备份列表
bash ~/.openclaw/skills/openclaw-backup/scripts/list_backups.sh

方式2:通过 OpenClaw 调用

当用户说:

  • "备份 OpenClaw" → 执行加密备份
  • "定时备份" → 执行 setup_cron.sh
  • "查看备份" → 执行 list_backups.sh

环境变量

可选配置:

# 备份目录(默认桌面)
export OPENCLAW_BACKUP_DIR="$HOME/Backups/OpenClaw"

# 加密密码(不推荐明文存储)
export OPENCLAW_BACKUP_PASSWORD="your_password"

# 备份脚本路径(用于 cron)
export OPENCLAW_BACKUP_SCRIPT="$HOME/.openclaw/skills/openclaw-backup/scripts/backup_encrypted.sh"

最佳实践

1. 3-2-1 备份原则

  • 保留 3 份副本
  • 存在 2 种介质(本地 + 移动硬盘/云盘)
  • 其中 1 份在异地

2. 加密备份

备份文件包含敏感数据:

  • API Key
  • Telegram Bot Token
  • 用户记忆
  • 对话历史

强烈建议使用加密备份(backup_encrypted.sh

3. 定期验证

每月验证一次备份完整性:

cd ~/Desktop/OpenClaw_Backups
shasum -c openclaw_backup_2026-03-13_20-00-00.tar.gz.sha256

4. 备份触发时机

建议在以下操作后手动备份:

  • ✅ 修改配置文件
  • ✅ 新增 Skill
  • ✅ 更新记忆文件(MEMORY.md)
  • ✅ 绑定新渠道
  • ✅ 修改 API Key
  • ✅ 完成重要对话

云端同步(可选)

iCloud Drive

# 修改备份目录
export OPENCLAW_BACKUP_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/OpenClaw_Backups"

Google Drive / Dropbox

安装对应客户端后:

export OPENCLAW_BACKUP_DIR="$HOME/Google Drive/OpenClaw_Backups"
# 或
export OPENCLAW_BACKUP_DIR="$HOME/Dropbox/OpenClaw_Backups"

故障排查

问题1:cron 任务未执行

检查

# 查看 cron 任务
crontab -l

# 查看日志
tail -f /tmp/openclaw_backup.log

解决:确保脚本有执行权限

chmod +x ~/.openclaw/skills/openclaw-backup/scripts/*.sh

问题2:加密失败

症状openssl: command not found

解决:macOS 自带 openssl,如果缺失:

brew install openssl

问题3:备份文件过大

症状:备份文件几百MB/GB

原因:可能包含日志文件、临时文件

解决:编辑 backup.sh,添加排除规则:

# 在 cp -a 之前添加
echo "清理临时文件..."
find "$STATE_DIR_NEW" -name "*.log" -delete 2>/dev/null || true
find "$STATE_DIR_NEW" -name "node_modules" -type d -exec rm -rf {} + 2>/dev/null || true

参考

安全使用建议
This skill appears to do exactly what it claims: bundle and run shell scripts to copy and optionally encrypt your OpenClaw data and optionally schedule cron jobs. Before installing or running: 1) Inspect the scripts yourself (they are plain shell) and ensure you trust any sample remote hosts (rsync example uses backup.example.com). 2) Understand backups include sensitive secrets (API keys, bot tokens, memory); always use encrypted backups before uploading to cloud or remote servers and do not store passwords in plaintext env vars. 3) Running setup_cron.sh will modify your crontab — back up your crontab or confirm the change. 4) Address the static-scan flag: open SKILL.md in an editor that reveals hidden/control characters to ensure there is no hidden/injected content. If you need higher assurance, run the scripts manually step-by-step rather than enabling automated cron immediately.
功能分析
Type: OpenClaw Skill Name: halaoluan-openclaw-backup Version: 1.0.0 The skill provides functional backup and encryption utilities for OpenClaw data but is classified as suspicious due to high-risk system interactions and a cryptographic implementation flaw. It accesses sensitive directories (~/.openclaw) containing API keys and session tokens, and it modifies system persistence by installing a cron job via 'scripts/setup_cron.sh'. Furthermore, 'scripts/backup_encrypted.sh' insecurely passes the encryption password as a command-line argument to openssl, which exposes the secret to other users or processes on the system via the process list. While these behaviors align with the stated purpose of a backup tool, they represent significant security risks.
能力评估
Purpose & Capability
Name/description say 'backup OpenClaw data' and the repository contains shell scripts that copy ~/.openclaw and ~/.clawdbot, create tar.gz archives, optionally encrypt with openssl, produce SHA256 checksums, and offer cron setup and rsync/cloud copy examples — all coherent with the stated purpose.
Instruction Scope
Runtime instructions and scripts operate on expected paths (~/.openclaw, ~/.clawdbot), stop/start the OpenClaw gateway if present, and can add cron entries. This is within scope, but backups will contain sensitive items (API keys, tokens, memory files). The SKILL.md and scripts do not exfiltrate data by default, but they include examples to copy to cloud or remote servers (rsync/Cloud Drive) which — if used — will transfer those sensitive files.
Install Mechanism
No remote download/install step is declared; this is an instruction-only skill with plain shell scripts included. No obfuscated binaries or external archives are pulled during install. Low install risk.
Credentials
The skill does not declare required credentials. Scripts honor optional env vars (OPENCLAW_BACKUP_DIR, OPENCLAW_BACKUP_PASSWORD, OPENCLAW_BACKUP_SCRIPT) documented in README. That is reasonable. Important: backups contain API keys, tokens and channel data — encrypt before uploading or storing off-machine; the skill warns about this. Avoid setting passwords in plaintext environment variables unless you understand the risk.
Persistence & Privilege
always:false. The only persistent system change the skill can make is adding a crontab entry (setup_cron.sh) and writing files to the chosen backup directory and /tmp logs. Adding a cron job is expected for a backup tool but is a privileged action that should be performed with user confirmation.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install halaoluan-openclaw-backup
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /halaoluan-openclaw-backup 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: AES-256 encrypted backup, cron scheduling, cloud sync support
元数据
Slug halaoluan-openclaw-backup
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Openclaw Backup 是什么?

定期备份和加密保护 OpenClaw 数据,支持手动执行、定时调度及备份文件云端同步和校验。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 281 次。

如何安装 Openclaw Backup?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install halaoluan-openclaw-backup」即可一键安装,无需额外配置。

Openclaw Backup 是免费的吗?

是的,Openclaw Backup 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Openclaw Backup 支持哪些平台?

Openclaw Backup 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Openclaw Backup?

由 halaoluan(@halaoluan)开发并维护,当前版本 v1.0.0。

💬 留言讨论