乐于分享
好东西不私藏

手把手教你用OpenClaw实现百度网盘自动备份(超详细教程)

手把手教你用OpenClaw实现百度网盘自动备份(超详细教程)

一、背景与优势

1.1 为什么需要自动备份?

  • 手动备份容易忘记,数据丢失风险高
  • 百度网盘免费空间大,适合存备份文件
  • 自动化备份可设置周期(每天/每周),低运维成本

1.2 OpenClaw实现优势

  • 开源免费,支持自定义脚本
  • 内置定时任务(Cron)功能,精准控制备份时间
  • 可结合飞书/微信等渠道发送备份结果通知
  • 支持增量备份、覆盖式备份等多种策略

二、前置准备

2.1 环境要求

项目
要求
说明
OpenClaw版本
≥2026.3.12
需支持Cron定时任务功能
系统环境
Linux (Ubuntu/Debian推荐)
本文以Ubuntu 24.10为例
网络
能访问百度网盘API
无需公网IP,本地网络即可
百度网盘账号
已注册

2.2 百度网盘技能(bdpan-storage)详细安装指南

步骤1:确认技能存在(避免名称错误)

# 先搜索ClawHub上的百度网盘技能,确认官方名称openclaw skills search bdpan# ✅ 正常输出应包含:bdpan-storage (百度网盘文件管理 Skill)# ❌ 若未找到:检查网络,或手动从 https://clawhub.com/skills/bdpan-storage 确认

步骤2:执行安装命令

# 从ClawHub安装官方百度网盘技能openclaw skills install bdpan-storage

安装过程预期输出

正在从ClawHub下载技能包...解压到 ~/.openclaw/workspace/skills/bdpan-storage/安装完成,技能已激活!

步骤3:验证安装完整性

# 1. 检查技能目录结构(必须包含以下文件)ls -la ~/.openclaw/workspace/skills/bdpan-storage/# ✅ 必须包含:SKILL.md、scripts/、README.md(如有)# 2. 检查核心脚本是否存在(备份/上传/删除全靠这些)ls -la ~/.openclaw/workspace/skills/bdpan-storage/scripts/# ✅ 必须包含:bdpan-login.sh、bdpan-upload.sh、bdpan-ls.sh、bdpan-delete.sh# 3. 检查系统依赖(脚本运行的基础)which curl jq tar bash  # 这四个命令必须都有输出# ❌ 缺少依赖解决:sudo apt-get install curl jq tar

步骤4:百度网盘授权

# 运行授权脚本(必须用bash执行,不要用sh)bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-login.sh

授权过程避坑点

  1. 二维码不显示/无法识别

    • 坑点:终端字体过小导致二维码模糊 → 放大终端字体(Ctrl+加号)或复制脚本输出的链接到浏览器打开
    • 坑点:终端不支持显示图片 → 直接访问脚本输出的 https://pan.baidu.com/... 链接授权
  2. 二维码5分钟过期

    • 解决:重新运行 bdpan-login.sh 生成新二维码,不要等
  3. 授权失败提示 authorization failed

    • 原因1:网络无法访问百度网盘API → 测试:ping pan.baidu.com 或 curl https://pan.baidu.com
    • 原因2:旧授权缓存冲突 → 清除缓存:rm -rf ~/.bdpan-token 后重新授权
  4. 权限报错 permission denied

    • 解决:不要用 sh bdpan-login.sh(脚本含bash语法),推荐 bash bdpan-login.sh

步骤5:验证授权成功

# 列出百度网盘根目录,确认授权生效bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-ls.sh /# ✅ 正常输出:显示根目录文件列表,无报错# ❌ 报错 `not logged in`:重新执行授权步骤

三、百度网盘技能安装避坑指南

错误场景
原因
解决方法
openclaw: command not found
OpenClaw未安装或PATH未配置
重新安装或 export PATH=$PATH:~/.npm-global/bin
bdpan-storage: skill not found
技能名称错误或未同步
用 openclaw skills search bdpan 确认名称,或手动下载技能包
bdpan-login.sh: No such file
技能安装不完整
删除 ~/.openclaw/workspace/skills/bdpan-storage/ 后重新安装
curl: command not found
缺少curl依赖
sudo apt-get install curl
jq: command not found
缺少jq(JSON解析工具)
sudo apt-get install jq
授权后 bdpan-ls.sh 仍报错未登录
授权缓存未生效
重启终端或 source ~/.bashr

四、核心实现步骤(完整无省略)

4.1 编写备份脚本

我们创建两个备份脚本,分别用于增量备份覆盖式备份,所有脚本存放到 /mnt/new_disk/scripts/(可自定义)。

脚本1:增量备份脚本(/mnt/new_disk/scripts/backup-to-bdpan.sh

#!/bin/bashset -e  # 遇到错误立即退出# ========= 配置区 =========LOCAL_DIR="$HOME/.openclaw/workspace"# 本地要备份的目录BDPAN_TARGET_DIR="/openclaw-backup/incremental"# 百度网盘目标目录LOG_FILE="/tmp/backup-to-bdpan.log"# 日志文件DATE=$(date +%Y-%m-%d_%H-%M-%S)  # 当前时间戳(避免文件名重复)BACKUP_FILE="/tmp/openclaw-backup-$DATE.tar.gz"# 本地临时压缩包路径# ========= 初始化 =========echo"[$(date)] 开始增量备份..." >> $LOG_FILE# ========= 步骤1:检查本地目录是否存在 =========if [ ! -d "$LOCAL_DIR" ]; thenecho"[$(date)] 错误:本地目录 $LOCAL_DIR 不存在" >> $LOG_FILEexit 1fi# ========= 步骤2:创建本地压缩包 =========echo"[$(date)] 压缩本地文件到 $BACKUP_FILE" >> $LOG_FILEtar -czf $BACKUP_FILE -C $LOCAL_DIR . 2>> $LOG_FILE# 检查压缩包是否生成if [ ! -f "$BACKUP_FILE" ]; thenecho"[$(date)] 错误:压缩包生成失败" >> $LOG_FILEexit 1fiecho"[$(date)] 压缩完成,文件大小:$(du -h $BACKUP_FILE | cut -f1)" >> $LOG_FILE# ========= 步骤3:确保百度网盘目标目录存在 =========echo"[$(date)] 确保百度网盘目录 $BDPAN_TARGET_DIR 存在" >> $LOG_FILEbash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-mkdir.sh $BDPAN_TARGET_DIR >> $LOG_FILE 2>&1 || true# ========= 步骤4:上传到百度网盘 =========echo"[$(date)] 上传压缩包到百度网盘 $BDPAN_TARGET_DIR" >> $LOG_FILEbash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-upload.sh \$BACKUP_FILE \$BDPAN_TARGET_DIR/openclaw-backup-$DATE.tar.gz >> $LOG_FILE 2>&1# 检查上传是否成功(检查百度网盘是否存在该文件)echo"[$(date)] 验证上传结果..." >> $LOG_FILEbash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-ls.sh \"$BDPAN_TARGET_DIR/openclaw-backup-$DATE.tar.gz" >> $LOG_FILE 2>&1# ========= 步骤5:清理本地临时文件 =========echo"[$(date)] 清理本地临时文件" >> $LOG_FILErm -f $BACKUP_FILEecho"[$(date)] 增量备份完成!文件已上传至 $BDPAN_TARGET_DIR/openclaw-backup-$DATE.tar.gz" >> $LOG_FILEexit 0

脚本2:覆盖式备份脚本

#!/bin/bashset -e  # 遇到错误立即退出# ========= 配置区 =========LOCAL_DIR="$HOME/.openclaw/workspace"# 本地要备份的目录BDPAN_TARGET_DIR="/openclaw-backup/full"# 百度网盘目标目录LOG_FILE="/tmp/backup-openclaw.log"# 日志文件DATE=$(date +%Y-%m-%d)  # 当前日期(用于文件名)BACKUP_FILE="/tmp/openclaw-full-backup-$DATE.tar.gz"# 本地临时压缩包路径# ========= 初始化 =========echo"[$(date)] 开始覆盖式备份..." >> $LOG_FILE# ========= 步骤1:检查本地目录 =========if [ ! -d "$LOCAL_DIR" ]; thenecho"[$(date)] 错误:本地目录 $LOCAL_DIR 不存在" >> $LOG_FILEexit 1fi# ========= 步骤2:压缩文件 =========echo"[$(date)] 压缩本地文件到 $BACKUP_FILE" >> $LOG_FILEtar -czf $BACKUP_FILE -C $LOCAL_DIR . 2>> $LOG_FILE# 检查压缩包if [ ! -f "$BACKUP_FILE" ]; thenecho"[$(date)] 错误:压缩包生成失败" >> $LOG_FILEexit 1fiecho"[$(date)] 压缩完成,文件大小:$(du -h $BACKUP_FILE | cut -f1)" >> $LOG_FILE# ========= 步骤3:删除百度网盘旧备份(保留最新1份) =========echo"[$(date)] 删除百度网盘旧备份..." >> $LOG_FILE# 列出旧备份文件,排除当前要上传的(如果存在)OLD_FILES=$(bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-ls.sh \"$BDPAN_TARGET_DIR/openclaw-full-backup-*.tar.gz" 2>/dev/null | grep -v "$DATE")if [ -n "$OLD_FILES" ]; thenecho"$OLD_FILES" | whileread -r old_file; doecho"[$(date)] 删除旧备份:$old_file" >> $LOG_FILE        bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-delete.sh \"$old_file" >> $LOG_FILE 2>&1 || truedonefi# ========= 步骤4:上传新备份 =========echo"[$(date)] 上传新备份..." >> $LOG_FILE# 确保目标目录存在bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-mkdir.sh \$BDPAN_TARGET_DIR >> $LOG_FILE 2>&1 || truebash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-upload.sh \$BACKUP_FILE \$BDPAN_TARGET_DIR/openclaw-full-backup-$DATE.tar.gz >> $LOG_FILE 2>&1# ========= 步骤5:清理本地临时文件 =========echo"[$(date)] 清理本地临时文件" >> $LOG_FILErm -f $BACKUP_FILEecho"[$(date)] 覆盖式备份完成!最新备份:$BDPAN_TARGET_DIR/openclaw-full-backup-$DATE.tar.gz" >> $LOG_FILEexit 0

给脚本添加执行权限

chmod +x /mnt/new_disk/scripts/backup-to-bdpan.shchmod +x /mnt/new_disk/scripts/backup-openclaw.sh

4.2 配置OpenClaw定时任务

OpenClaw的定时任务配置文件路径:~/.openclaw/cron/jobs.json

完整定时任务配置示例(包含增量+覆盖备份)

{"version":1,"jobs":[{"id":"xxx","name":"每周备份OpenClaw到百度网盘(增量)","enabled":true,"createdAtMs":1775920061119,"schedule":{"kind":"cron","expr":"0 0 * * 1","tz":"Asia/Shanghai"},"sessionTarget":"isolated","wakeMode":"now","payload":{"kind":"agentTurn","message":"执行 OpenClaw 增量备份任务:\n1. 运行备份脚本:bash /mnt/new_disk/scripts/backup-to-bdpan.sh\n2. 输出备份结果\n3. 如果失败,输出错误信息并通知","timeoutSeconds":300},"delivery":{"mode":"announce","channel":"feishu","to":"user:xxxx"}},{"id":"xxxx","name":"每周二全量备份OpenClaw(覆盖式)","enabled":true,"createdAtMs":1777654213011,"schedule":{"kind":"cron","expr":"0 0 * * 2","tz":"Asia/Shanghai"},"sessionTarget":"isolated","wakeMode":"now","payload":{"kind":"agentTurn","message":"执行OpenClaw全量备份(覆盖式):运行命令 bash /mnt/new_disk/scripts/backup-openclaw.sh,完成后用飞书通知备份结果。","timeoutSeconds":300},"delivery":{"mode":"announce","channel":"feishu","to":"user:xxxx"}}]}

Cron表达式详解

字段位置
含义
取值范围
示例
说明
1
分钟
0-59
0
整点执行
2
小时
0-23
0
凌晨12点
3
1-31
*
每天
4
1-12
*
每月
5
星期
0-6(0=周日)
1
周一

常用Cron示例

  • 0 3 * * *:每天凌晨3点
  • 0 12 * * 1-5:工作日中午12点
  • 0 0 1 * *:每月1号凌晨12点

重启OpenClaw网关使配置生效

openclaw gateway restart# 检查任务是否加载openclaw cron list# 应该能看到刚才添加的两个备份任务

4.3 测试备份任务

手动执行脚本测试

# 测试增量备份脚本bash /mnt/new_disk/scripts/backup-to-bdpan.sh# 实时查看日志输出tail -f /tmp/backup-to-bdpan.log# 检查百度网盘是否收到文件bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-ls.sh /openclaw-backup/incremental
# 测试覆盖式备份脚本bash /mnt/new_disk/scripts/backup-openclaw.sh# 查看日志tail -f /tmp/backup-openclaw.log# 检查百度网盘是否只有最新一份备份bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-ls.sh /openclaw-backup/full

手动触发定时任务测试

# 立即执行增量备份任务(无需等Cron时间)openclaw cron run 53a3d57c-adba-4444-a8cb-63ac8a6d4be8# 查看任务执行状态openclaw cron status 53a3d57c-adba-4444-a8cb-63ac8a6d4be8# ✅ 状态应为:lastRunStatus: "success"# 立即执行覆盖式备份任务openclaw cron run c14999af-652b-4503-bd9a-d129b0644d88

五、监控与故障排查

5.1 查看执行日志

# OpenClaw网关日志(查看定时任务调度情况)tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log# 增量备份脚本日志tail -f /tmp/backup-to-bdpan.log# 覆盖式备份脚本日志tail -f /tmp/backup-openclaw.log

5.2 常见错误排查

错误提示
原因
解决方法
bdpan: not logged in
百度网盘未授权
重新运行 bdpan-login.sh 扫码登录
permission denied
脚本无执行权限
chmod +x 脚本路径
cron: job not found
任务ID错误
用 openclaw cron list 确认任务ID
gateway closed
OpenClaw网关未启动
openclaw gateway start
tar: file truncated
本地文件被占用
停止占用文件的程序后重试
upload failed: 413
文件过大(百度网盘限制)
拆分压缩包或升级百度网盘会员

六、扩展功能

6.1 添加飞书通知

定时任务的 delivery 字段已配置飞书通知:

"delivery":{"mode":"announce","channel":"feishu","to":"user:x'x'x'x"}

备份完成后会自动发送飞书消息通知你,包含成功/失败状态和日志摘要。

6.2 加密备份文件(可选)

在压缩前添加加密步骤(使用gpg):

# 安装gpgsudo apt-get install gpg# 修改备份脚本,在tar压缩后添加加密:gpg --batch --yes --passphrase '你的强密码' -c $BACKUP_FILE# 上传加密后的文件(.gpg后缀)bash ~/.openclaw/workspace/skills/bdpan-storage/scripts/bdpan-upload.sh \$BACKUP_FILE.gpg \$BDPAN_TARGET_DIR/openclaw-backup-$DATE.tar.gz.gpg

6.3 多目录备份

修改脚本的 LOCAL_DIR 变量,添加多个目录:

# 定义要备份的目录数组LOCAL_DIRS=("$HOME/.openclaw/workspace""/mnt/data/important""/etc/nginx")DATE=$(date +%Y-%m-%d)BACKUP_FILE="/tmp/openclaw-backup-$DATE.tar.gz"# 逐个打包目录tar -czf $BACKUP_FILE -C / $(echo"${LOCAL_DIRS[@]}" | sed 's|/||g') 2>> $LOG_FILE

6.4 日志轮转(防止日志文件过大)

添加日志轮转配置:

# 在脚本开头添加日志轮转逻辑if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE") -gt 10485760 ]; thenmv$LOG_FILE$LOG_FILE.oldtouch$LOG_FILEfi

七、注意事项(重要)

  1. 备份频率:重要数据建议每天备份,普通数据每周即可
  2. 保留策略:百度网盘免费用户建议只保留最近3份备份,避免空间不足
  3. 密码安全:加密密码不要写在脚本里,用环境变量存储:export BDPAN_ENCRYPT_PASS=你的密码
  4. 网络稳定:备份大文件时确保网络稳定,避免中断导致上传失败
  5. 定期验证:每月下载一次备份文件,验证是否可正常解压
  6. 权限控制:备份脚本仅root或当前用户可执行,避免其他用户篡改

▽往期推荐△

Windows玩不了VLLM?WSL2部署教程,小白也能快速上手!

告别复杂配置!轻松使用VLLM部署大模型

手把手教你用DeepSeek:轻松拥有自己的AI助理

夜莺监控系统部署小记

告别手动!AI+Python自动化生成网络巡检报告

告别单机局限!多机多卡部署大模型,GPU集群实战指南来了!

告别网络依赖!DeepSeek+Vs Code,离线状态也能轻松驾驭

手把手教你用DeepSeek:轻松拥有自己的AI助理

普通电脑也能运行AI大模型?DeepSeek本地部署全攻略

OpenClaw 部署实战:飞书集成篇

数据库备份不用愁!Python帮你快速搞定

利用Python + MySQL,快速实现本地密码本自由

Linux系统邮件告警神器:高效脚本大放送!

揭秘!禁ping设备如何巧妙测试网络延迟