diff --git a/skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/manifest.json b/skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/manifest.json new file mode 100644 index 0000000..42b1544 --- /dev/null +++ b/skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/manifest.json @@ -0,0 +1,16 @@ +{ + "schema": "openclaw.skill-collection-backup.v1", + "id": "2026-09-06T23-13-25.844Z-b5cdd236", + "createdAt": "2026-09-06T23:13:25.844Z", + "workspaceDir": "/home/yangxuan/.openclaw/workspace-pbs", + "skillDirs": [ + "skills/pbs-bk03-opt-backup", + "skills/pbs-vps01-opt-backup" + ], + "resultSkillDirs": [ + "skills/pbs-host-opt-backup" + ], + "resultSkillHashes": { + "skills/pbs-host-opt-backup": "cf6c417db573745975bb20547dcf08929ed93bc1ad4948d5055ddd8eab6aca31" + } +} \ No newline at end of file diff --git a/workspace-pbs/skills/pbs-bk03-opt-backup/SKILL.md b/skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/workspace/skills/pbs-bk03-opt-backup/SKILL.md similarity index 100% rename from workspace-pbs/skills/pbs-bk03-opt-backup/SKILL.md rename to skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/workspace/skills/pbs-bk03-opt-backup/SKILL.md diff --git a/workspace-pbs/skills/pbs-vps01-opt-backup/SKILL.md b/skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/workspace/skills/pbs-vps01-opt-backup/SKILL.md similarity index 100% rename from workspace-pbs/skills/pbs-vps01-opt-backup/SKILL.md rename to skill-workshop/collection-backups/199220d5955abf0b/2026-09-06T23-13-25.844Z-b5cdd236/workspace/skills/pbs-vps01-opt-backup/SKILL.md diff --git a/skill-workshop/proposals/pbs-host-opt-backup-20260906-9444ac7dde/generations/c964bd31-bd12-4b3c-82e2-32f904f94d15/PROPOSAL.md b/skill-workshop/proposals/pbs-host-opt-backup-20260906-9444ac7dde/generations/c964bd31-bd12-4b3c-82e2-32f904f94d15/PROPOSAL.md new file mode 100644 index 0000000..890d844 --- /dev/null +++ b/skill-workshop/proposals/pbs-host-opt-backup-20260906-9444ac7dde/generations/c964bd31-bd12-4b3c-82e2-32f904f94d15/PROPOSAL.md @@ -0,0 +1,57 @@ +--- +name: "pbs-host-opt-backup" +description: "备份主机 /opt 到 pbs01 library(proxmox-backup-client 客户端推送)。连接源主机(bk03/vps01)、认证对应 PBS 仓库、推送 /opt 为 .pxar。" +status: proposal +version: "v1" +date: "2026-09-06T23:13:25.733Z" +--- + +# 主机 /opt 备份到 pbs01 + +把某台主机的 `/opt` 目录推送备份到 Proxmox Backup Server pbs01 的 `library` 存储(客户端推送模式:备份由源主机主动推送)。支持的主机见「主机参数」。 + +## 主机参数(按源主机选 token / tailscale IP / 登录用户) + +| 源主机 | 主机名 | 登录用户 | Tailscale IP | token | pxar 名 | library 组 | +|---|---|---|---|---|---|---| +| bk03 | xuan-aq | yangxuan(su/sudo 提 root) | 100.115.195.193 | backup@pbs!bk03 | bk03_opt.pxar | host/xuan-aq | +| vps01 | xuan-vps | root(直接 SSH) | 100.115.195.20(内网 10.0.0.17) | backup@pbs!vps01_opt | vps_opt.pxar | host/xuan-vps | + +pbs01 不变:Tailscale `100.115.195.195`,datastore `library`。 + +## 认证(在源主机上执行) + +```bash +export PBS_REPOSITORY='backup@pbs!@100.115.195.195:library' +export PBS_PASSWORD='' # 从源主机权限 600 的安全文件读取,勿明文输出 +``` + +credential 红线:token secret 与 SSH 密码只存在源主机(权限 600 文件),绝不写入 pbs01 / 日志 / 记忆 / 聊天。 + +## 备份命令(在源主机上执行) + +```bash +proxmox-backup-client backup :/opt [--backup-id <主机名>] +``` + +`--backup-id` 仅在需让快照组匹配主机名时加(如 vps01 用 `--backup-id xuan-vps`);bk03 直接 `proxmox-backup-client backup bk03_opt.pxar:/opt`。 + +## 验证(只读,在源主机) + +```bash +proxmox-backup-client snapshot list # 全部快照 +proxmox-backup-client snapshot list host/<主机名> # 指定组 +proxmox-backup-client status # 存储用量 +``` + +成功标志:`library` 产生 `host/<主机名>/YYYY-MM-DDTHH:MM:SSZ` 快照,内含对应 .pxar。 + +## 安全红线 + +- **敏感操作先请示用户**:执行真实备份、写配置、删快照前必须确认。 +- **不泄露 secret**:token secret、SSH 密码绝不写入 pbs01 / 日志 / 记忆 / 聊天。 +- 只读命令可直接执行;写 / 删 / 改必须先确认。 + +## 停滞 / 超时诊断 + +备份疑似停滞或报超时,不要贸然 kill——见 `pbs-backup-stall-diag` 判断慢速推进与网络通道问题(tailscale 卡死可用 LAN IP 直连 pbs01 恢复)。 diff --git a/workspace-pbs/skills/pbs-host-opt-backup/SKILL.md b/workspace-pbs/skills/pbs-host-opt-backup/SKILL.md new file mode 100644 index 0000000..c952661 --- /dev/null +++ b/workspace-pbs/skills/pbs-host-opt-backup/SKILL.md @@ -0,0 +1,54 @@ +--- +name: "pbs-host-opt-backup" +description: "备份主机 /opt 到 pbs01 library(proxmox-backup-client 客户端推送)。连接源主机(bk03/vps01)、认证对应 PBS 仓库、推送 /opt 为 .pxar。" +--- + +# 主机 /opt 备份到 pbs01 + +把某台主机的 `/opt` 目录推送备份到 Proxmox Backup Server pbs01 的 `library` 存储(客户端推送模式:备份由源主机主动推送)。支持的主机见「主机参数」。 + +## 主机参数(按源主机选 token / tailscale IP / 登录用户) + +| 源主机 | 主机名 | 登录用户 | Tailscale IP | token | pxar 名 | library 组 | +|---|---|---|---|---|---|---| +| bk03 | xuan-aq | yangxuan(su/sudo 提 root) | 100.115.195.193 | backup@pbs!bk03 | bk03_opt.pxar | host/xuan-aq | +| vps01 | xuan-vps | root(直接 SSH) | 100.115.195.20(内网 10.0.0.17) | backup@pbs!vps01_opt | vps_opt.pxar | host/xuan-vps | + +pbs01 不变:Tailscale `100.115.195.195`,datastore `library`。 + +## 认证(在源主机上执行) + +```bash +export PBS_REPOSITORY='backup@pbs!@100.115.195.195:library' +export PBS_PASSWORD='' # 从源主机权限 600 的安全文件读取,勿明文输出 +``` + +credential 红线:token secret 与 SSH 密码只存在源主机(权限 600 文件),绝不写入 pbs01 / 日志 / 记忆 / 聊天。 + +## 备份命令(在源主机上执行) + +```bash +proxmox-backup-client backup :/opt [--backup-id <主机名>] +``` + +`--backup-id` 仅在需让快照组匹配主机名时加(如 vps01 用 `--backup-id xuan-vps`);bk03 直接 `proxmox-backup-client backup bk03_opt.pxar:/opt`。 + +## 验证(只读,在源主机) + +```bash +proxmox-backup-client snapshot list # 全部快照 +proxmox-backup-client snapshot list host/<主机名> # 指定组 +proxmox-backup-client status # 存储用量 +``` + +成功标志:`library` 产生 `host/<主机名>/YYYY-MM-DDTHH:MM:SSZ` 快照,内含对应 .pxar。 + +## 安全红线 + +- **敏感操作先请示用户**:执行真实备份、写配置、删快照前必须确认。 +- **不泄露 secret**:token secret、SSH 密码绝不写入 pbs01 / 日志 / 记忆 / 聊天。 +- 只读命令可直接执行;写 / 删 / 改必须先确认。 + +## 停滞 / 超时诊断 + +备份疑似停滞或报超时,不要贸然 kill——见 `pbs-backup-stall-diag` 判断慢速推进与网络通道问题(tailscale 卡死可用 LAN IP 直连 pbs01 恢复)。