Rediacc CLI 参考
概述
**Rediacc CLI**(`rdc`)是一个用于管理自托管基础设施的命令行界面 — 机器、仓库、存储、备份等。
安装
从 [Rediacc 发布页面](https://www.rediacc.com) 下载适用于您平台的最新二进制文件,或通过包管理器安装:
# macOS / Linux
curl -fsSL https://www.rediacc.com | sh
# Or use the packaged binary directly
./rdc --help
全局选项
每个命令都支持以下全局标志:
| 标志 | 描述 |
|---|---|
--output | 输出格式(table|json|yaml|csv)。使用 REDIACC_DEFAULT_OUTPUT 覆盖默认值。 |
--config | 为此命令使用特定配置 |
--lang | 语言覆盖({{languages}}) |
--force | 跳过确认提示 |
1. 配置管理
管理配置文件:创建、切换、编辑、协调状态,以及各类横切功能(字段、审计、SSH 密钥、远程同步)。
配置文件存储连接详情(API URL、凭证、默认 team/region/bridge),让您可以快速切换环境。
1.1 prune
从 ~/.config/rediacc/<config>.json 中的本地配置文件中移除无用内容。清理三类内容,全部为纯本地操作(无 SSH/renet 调用):(1)锚点 GUID/仓库/机器不再存在于活动配置中的 ACME 证书缓存条目;(2)宽限期已过期的归档仓库(默认 7 天,参见 defaults.pruneGraceDays);(3)悬空的交叉引用(machine→strategy、strategy→repo)。在用资源、凭据、存储令牌和 known-hosts 永远不会被触及。默认行为是应用更改;使用 --dry-run 仅预览。
rdc config prune [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--dry-run | 预览将要移除的内容,但不修改配置文件。镜像其他 prune 命令的默认关闭语义。 | 否 | - |
--certs-only | 限制为 ACME 证书缓存桶。跳过归档清除和交叉引用清理。与 --archives-only 和 --refs-only 互斥。 | 否 | - |
--archives-only | 限制为过期归档清除。跳过证书缓存和交叉引用清理。与 --certs-only 和 --refs-only 互斥。 | 否 | - |
--refs-only | 限制为悬空交叉引用(machine→strategy、strategy→repo 排除/包含)。跳过证书缓存和归档。与 --certs-only 和 --archives-only 互斥。 | 否 | - |
--purge-archived | 无论年龄如何,删除所有归档仓库,而不仅仅是超过宽限期的仓库。等同于对每个归档仓库运行 'rdc repo admin archive purge'。仅在确定不需要任何已保存的凭据进行恢复时使用。 | 否 | - |
--orphan-repos | 移除未部署在任何机器上的仓库条目。每个条目都保存着该仓库的凭据和 SSH 密钥,因此该操作不可恢复,请先运行 'rdc config reconcile',使部署信息与机器实际状态保持一致。 | 否 | - |
--grace-days <days> | 覆盖此调用的归档宽限窗口(以天为单位)。回退到配置中的 defaults.pruneGraceDays,如果都未设置则回退到 7。 | 否 | - |
1.2 init
创建新的命名配置文件
在本地模式下,您可以直接添加机器:
rdc config init [name] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--ssh-key <path> | SSH 私钥路径(例如:~/.ssh/id_rsa) | 否 | - |
--renet-path <path> | renet 二进制文件的路径(默认:PATH 中的 renet) | 否 | - |
--master-password <password> | 使用主密码加密资源 | 否 | - |
--server <url> | 账户服务器URL | 否 | - |
1.3 list
列出所有配置文件
rdc config list
1.4 show
显示当前配置详情
rdc config show [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--reveal | 以明文显示敏感值(仅限交互模式) | 否 | - |
1.5 current
显示当前配置:名称、文件、解析出的服务器和渠道、令牌状态
rdc config current
1.6 delete
删除配置文件
rdc config delete <name>
1.7 set
设置默认值(team、region、bridge)
rdc config set <key> <value>
1.8 clear
清除默认值(全部或特定键)
rdc config clear [key]
1.9 recover
从备份文件 (.bak) 恢复配置
rdc config recover [name] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-y, --yes | 跳过确认提示 | 否 | - |
1.10 ssh
管理 SSH 密钥配置
set
为当前配置设置 SSH 密钥
rdc config ssh set [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--key <path> | SSH 私钥文件路径 | 是 | - |
--embed | 将密钥内容嵌入配置中而非存储路径 | 否 | - |
show
显示当前 SSH 密钥配置
rdc config ssh show
remove
从当前配置中移除 SSH 密钥
rdc config ssh remove
1.11 remote
管理远程配置存储连接
enable
将此配置链接到远程加密存储
rdc config remote enable [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--headless | 使用设备代码流程(用于无界面服务器) | 否 | - |
--password | 使用预先配置好的密码槽位进行无头注册(无需浏览器) | 否 | - |
--api-url <url> | 账户服务器URL | 否 | - |
--force | 无需确认,直接用服务器副本替换不同的本地内容 | 否 | - |
disable
断开远程存储连接并将配置保存到本地
rdc config remote disable
status
显示远程连接状态
rdc config remote status
refresh
强制从远程存储重新获取配置
rdc config remote refresh
1.12 field
基于 JSON 指针(RFC 6901)的配置字段操作(get/set/unset/rotate/list),如 /credentials/cfDnsApiToken。
get
按 JSON 指针读取单个配置值。敏感字段默认脱敏,除非使用 --reveal(仅限人工)。
rdc config field get [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--pointer <pointer> | 指向字段的 JSON 指针(例如 /credentials/cfDnsApiToken) | 是 | - |
--reveal | 以明文显示敏感值(仅限交互式 TTY;记入审计日志) | 否 | - |
--digest | 输出 SHA-256 摘要而非数值(可安全地分享给代理) | 否 | - |
set
在 JSON 指针位置写入配置值。敏感路径需提供 --current(知识门控)。
rdc config field set [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--pointer <pointer> | 指向字段的 JSON 指针(例如 /credentials/cfDnsApiToken) | 是 | - |
--new <value> | 新值(若以 {、[、" 开头或为 true/false/null/数字,则按 JSON 解析) | 是 | - |
--current <value> | 当前明文值 — 修改敏感路径时必填(知识门控证明) | 否 | - |
unset
删除 JSON 指针位置的配置值。敏感路径需提供 --current。
rdc config field unset [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--pointer <pointer> | 指向字段的 JSON 指针(例如 /credentials/cfDnsApiToken) | 是 | - |
--current <value> | 当前明文值 — 删除敏感路径时必填 | 否 | - |
rotate
在不提供 --current 的情况下轮换敏感值。仅交互式 TTY;详尽审计。
rdc config field rotate [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--pointer <pointer> | 指向敏感字段的 JSON 指针(例如 /credentials/cfDnsApiToken) | 是 | - |
--new <value> | 新值 | 是 | - |
list
列出每个已注册的敏感字段指针模板及其类别和提交/加密策略。
rdc config field list [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--sensitive | 仅显示敏感(非公开)模板 | 否 | - |
1.13 edit
在 $EDITOR 中以脱敏后的 JSONC 投影打开当前配置。仅限人工;拒绝代理。
rdc config edit [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--reveal | 以明文显示敏感值(仅限交互式 TTY;记入审计日志) | 否 | - |
--dump | 将当前配置以 JSONC 形式输出到 stdout,不打开编辑器(只读;脱敏时代理也可安全使用) | 否 | - |
--apply <file> | 应用已编辑的 JSONC 文件(跳过启动 $EDITOR) | 否 | - |
--current-secrets <file> | 指针→旧明文 的 JSON 映射文件,用于 --apply 时的知识门控 | 否 | - |
--editor <cmd> | 编辑器命令(遵循 git 优先级:--editor > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR) | 否 | - |
1.14 audit
查看配置审计日志(~/.config/rediacc/audit.log.jsonl 中的哈希链 JSONL)
log
以 JSON 格式打印最近的审计条目
rdc config audit log [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--since <spec> | 仅显示指定时间之后的条目(例如 '24h'、'7d'、ISO 时间戳) | 否 | - |
--path <glob> | 按 JSON 指针通配符过滤(例如 /credentials/*) | 否 | - |
--actor <kind> | 按操作者类型过滤(human|agent) | 否 | - |
tail
实时输出新写入的审计条目(Ctrl+C 停止)
rdc config audit tail
verify
验证所有审计条目上 SHA-256 哈希链的完整性
rdc config audit verify
1.15 reconcile
根据机器上的真实状态重建运行时状态。修复过时的挂接和路由数据。
rdc config reconcile [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--machine <m...> | 将协调(reconcile)限定于这些机器 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
--accept-observed | 将声明的放置位置重写为镜像的实际所在位置,但仅当结果是无歧义时才这样做(恰好在一台机器上观察到)。重复项仍视为冲突。 | 否 | - |
1.16 rotate-cek
轮换组织的配置加密密钥
rdc config rotate-cek [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--api-url <url> | 账户服务器URL | 否 | - |
2. 数据存储管理
存放仓库的命名存储池。数据存储是可移动的(挂接到一台机器,也可迁移到另一台),并且单点挂接(同一时刻只能由一台机器持有)。每台机器上隐式的默认数据存储不在此处管理。
2.1 resize
扩大或缩小数据存储。这是一项离线操作:其中的仓库必须先停止。
rdc datastore resize <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--size <size> | 新大小(例如 200G) | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
2.2 fork
以写时复制方式 fork 数据存储。fork 是即时完成的,其成本不会随存储池大小增长。需要 rbd 后端:local 数据存储没有块级克隆,因此其内部的仓库需改为通过 reflink 逐个 fork(rdc repo fork)。
rdc datastore fork <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--tag <tag> | fork 的标签(结果为 name:tag) | 是 | - |
--attach-to <machine> | 立即将 fork 挂接到此机器(需要 --writes) | 否 | - |
--writes <disposition> | fork 的写入去向:local(即时、临时)或 ceph(持久克隆) | 否 | - |
--cow-size <size> | --writes local 时使用的覆盖层大小 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
2.3 status
显示单个数据存储:其后端、挂接状态、使用情况、仓库和快照。即使数据存储已分离,也会显示其记录。
rdc datastore status <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
2.4 create
在机器上创建一个额外的命名数据存储。local 后端是该机器上基于文件的存储池,保留在本机;rbd 后端存在于 Ceph 中,因此可以迁移到能访问同一集群的任意机器。传入 --cluster 可使其成为 kubernetes 世界的数据存储;该反向引用在创建时固定。
rdc datastore create <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 要在其上创建数据存储的机器 | 是 | - |
--size <size> | 数据存储大小(例如 100G) | 是 | - |
--backend <type> | 存储后端:local(基于文件,保留在本机)或 rbd(Ceph,可迁移) | 否 | local |
--pool <name> | rbd 后端使用的 Ceph 池(默认:rbd) | 否 | - |
--image <name> | rbd 后端使用的 RBD 镜像名称(默认:数据存储名称) | 否 | - |
--cluster <name> | 此数据存储所属的 Kubernetes 集群。设置后仅支持 kubernetes 仓库;不设置则仅支持 docker 仓库。创建后固定不可更改。 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
2.5 list
列出命名数据存储、其挂接位置以及所包含的内容。
rdc datastore list [place]
2.6 attach
将数据存储挂接到机器。同一时刻只能有一台机器持有某个数据存储,因此将其挂接到别处即为迁移:旧持有者会先释放它,若移交失败则原有挂接保持不变。fork 必须指明其写入方式。
rdc datastore attach <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--to <machine> | 要挂接数据存储的目标机器 | 是 | - |
--writes <disposition> | fork 的写入去向:local(即时、临时,分离后丢失)或 ceph(存储池中的持久克隆)。fork 时必填。 | 否 | - |
--cow-size <size> | --writes local 时使用的覆盖层大小 | 否 | - |
--no-auto | 启动时不要自动重新挂接此数据存储 | 否 | - |
--force | 隔离(fence)未干净释放数据存储的过期持有者 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
2.7 detach
将数据存储从其所在机器分离。其中的仓库会先停止。以 --writes local 方式挂接的 fork 没有地方回写其覆盖层,因此分离时会丢弃该覆盖层,需要 --discard。
rdc datastore detach <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--discard | 丢弃本地写入(local-writes)fork 及其覆盖层。数据将无法恢复。 | 否 | - |
-y, --yes | 跳过确认提示 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
2.8 snapshot
创建并列出数据存储的时间点快照。静态存放的快照不占用额外成本,fork 正是从快照克隆而来。
create
为数据存储创建时间点快照。不停止任何服务。该时刻是崩溃一致的,而非应用一致的:如果需要确保某次写入被包含在快照中,请先执行同步(sync)。
rdc datastore snapshot create <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--snapshot <label> | 快照标签(默认:UTC 时间戳) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
list
列出数据存储的快照。
rdc datastore snapshot list <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
2.9 delete
销毁数据存储及其中的所有内容。会先执行分离;若无法干净分离,删除操作将失败,而不会留下孤立的已挂载存储池。
rdc datastore delete <datastore> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-y, --yes | 跳过确认提示 | 否 | - |
--force | 即使仍有仓库指向它也执行删除,仓库数据将随之一并删除。 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
3. 机器管理
检查远程机器状态:系统资源、运行中的容器、systemd 服务、已部署的仓库以及健康诊断。只读查询;如需修改仓库请使用 `repo`。关键子命令:status(完整状态,可用 --system、--containers、--repositories、--services 缩小范围)、health、list、add、remove、setup、prune、provision、deprovision。
3.1 list
列出机器
rdc machine list [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--search <text> | 在 {{field}} 中搜索 | 否 | - |
--sort <field> | 按字段排序 | 否 | - |
--desc | 按降序排序 | 否 | - |
3.2 health
检查 CI/CD 流水线的机器健康状况
health 命令输出系统指标、容器状态、服务稳定性和存储信息 — 适用于 CI/CD 管道检查。
rdc machine health <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-t, --team <name> | 团队名称 | 否 | - |
3.3 provision
使用OpenTofu在云提供商上配置新机器
rdc machine provision <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--provider <name> | 云提供商名称(来自 machine provider add) | 是 | - |
--region <region> | 覆盖默认区域 | 否 | - |
--type <type> | 覆盖默认实例类型 | 否 | - |
--image <image> | 覆盖默认操作系统镜像 | 否 | - |
--ssh-user <user> | 新虚拟机的SSH用户名(默认:root) | 否 | - |
--base-domain <domain> | 基础设施的基础域名(例如 example.com)。隐含 --infra | 否 | - |
--no-infra | 跳过基础设施配置(代理 + DNS) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
3.4 deprovision
销毁云配置的机器并从配置中移除
rdc machine deprovision <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--force | 跳过确认提示 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
3.5 prune
从机器中移除孤立的数据存储资源和过期快照
rdc machine prune <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--dry-run | 显示将被移除的内容,但不做实际更改 | 否 | - |
--orphaned-repos | 删除机器上所有不在本地 CLI 配置中的仓库镜像。这是粗粒度操作 — 也会移除由其他工具创建、没有本地配置条目的 fork,即使其 renet 镜像已正确将其识别为 fork。如需遵循镜像的更精细行为,请使用 --prune-unknown。 | 否 | - |
--prune-unknown | 仅删除 renet .interim/state 镜像无法分类的仓库(不在本地配置中且没有标记为 fork 的镜像)。比 --orphaned-repos 严格更窄:镜像识别时保留没有配置的 fork。镜像前的遗留孤儿和配置条目已删除的过时 grands 都属于此类别。 | 否 | - |
--force-delete-mounted | 覆盖挂载安全预检并删除仓库,即使它们当前已挂载或有正在运行的 Docker 容器。与 --force 不同(后者仅覆盖归档宽限期)。适用于 --orphaned-repos 和 --prune-unknown。 | 否 | - |
--force | 跳过确认提示 | 否 | - |
--grace-days <days> | 最近归档仓库的宽限期天数(默认:7) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
3.6 add
将机器添加到当前配置
rdc machine add <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--ip <address> | 机器 IP 地址或主机名 | 是 | - |
--user <username> | SSH 用户名 | 是 | - |
--port <port> | SSH 端口 | 否 | 22 |
3.7 infra
管理基础设施配置(代理、DNS、证书)
cert
管理缓存的 TLS 证书
移除证书缓存
rdc machine infra cert clear
从机器下载并缓存 TLS 证书
rdc machine infra cert pull <machine> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--no-prune | 跳过清理过期的网络 ID 证书 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
将缓存的 TLS 证书上传到机器
rdc machine infra cert push <machine> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
显示缓存的证书清单
rdc machine infra cert status
push
将基础设施配置推送到机器(Traefik 代理、路由器、Cloudflare DNS)。请先运行 'machine infra set <machine>'
rdc machine infra push <machine> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
set
设置机器的基础设施配置(机器特定:IP、域名、端口;共享:证书邮箱、CF DNS 令牌)
rdc machine infra set <machine> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--public-ipv4 <ip> | 公共 IPv4 地址(按机器) | 否 | - |
--public-ipv6 <ip> | 公共 IPv6 地址(按机器) | 否 | - |
--base-domain <domain> | 应用程序的基础域名(按机器) | 否 | - |
--cert-email <email> | TLS 证书通知邮箱(跨机器共享) | 否 | - |
--cf-dns-token <token> | 用于 ACME DNS-01 验证的 Cloudflare DNS API 令牌(跨机器共享) | 否 | - |
--tcp-ports <ports> | 要转发的 TCP 端口(逗号分隔,例如 25,143,465) | 否 | - |
--udp-ports <ports> | 要转发的 UDP 端口(逗号分隔,例如 53) | 否 | - |
show
显示机器的基础设施配置
rdc machine infra show <machine>
3.8 provider
管理用于自动配置机器的云服务提供商
add
添加云服务提供商
rdc machine provider add <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--provider <source> | 已知提供商来源(例如 linode/linode, hetznercloud/hcloud) | 否 | - |
--source <source> | 自定义 OpenTofu 提供商来源(例如 vultr/vultr) | 否 | - |
--token <token> | 云服务提供商的 API 令牌 | 是 | - |
--region <region> | 新机器的默认区域 | 否 | - |
--type <type> | 默认实例类型/大小 | 否 | - |
--image <image> | 默认操作系统镜像 | 否 | - |
--ssh-user <user> | 新虚拟机的 SSH 用户名(默认:root) | 否 | - |
--resource <type> | 自定义:虚拟机的 OpenTofu 资源类型 | 否 | - |
--label-attr <attr> | 自定义:虚拟机标签的属性名 | 否 | - |
--region-attr <attr> | 自定义:区域的属性名 | 否 | - |
--size-attr <attr> | 自定义:实例类型的属性名 | 否 | - |
--image-attr <attr> | 自定义:操作系统镜像的属性名 | 否 | - |
--ipv4-output <attr> | 自定义:IPv4 地址的输出属性 | 否 | - |
--ipv6-output <attr> | 自定义:IPv6 地址的输出属性 | 否 | - |
--ssh-key-attr <attr> | 自定义:SSH 密钥的属性名 | 否 | - |
--ssh-key-format <format> | 自定义:SSH 密钥格式(inline_list 或 resource_id) | 否 | - |
--ssh-key-resource <type> | 自定义:SSH 密钥的 OpenTofu 资源类型 | 否 | - |
list
列出已配置的云服务提供商
rdc machine provider list
remove
移除云服务提供商配置
rdc machine provider remove <name>
3.9 remove
从当前配置中移除机器
rdc machine remove <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-y, --yes | 跳过确认提示 | 否 | - |
--force | 即使仓库仍放置在该机器上,也移除该机器,使这些放置处于悬空状态。 | 否 | - |
3.10 scan-keys
扫描当前配置中机器的 SSH 主机密钥
rdc machine scan-keys [name]
3.11 setup
为仓库配置远程机器(安装 renet、配置 Docker、BTRFS 数据存储)。幂等操作。在 config machine add 之后、repo create 之前需要执行
rdc machine setup <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--datastore-path <path> | 远程机器上的数据存储路径 | 否 | /mnt/rediacc |
--datastore-size <size> | 数据存储大小(例如:95%、100G) | 否 | 95% |
--debug | 启用调试输出(本地模式) | 否 | - |
3.12 status
显示完整机器状态(系统、仓库、容器、服务)
rdc machine status [name] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
--system | 仅包含系统信息 | 否 | - |
--repositories | 仅包含仓库 | 否 | - |
--containers | 仅包含容器 | 否 | - |
--services | 仅包含服务 | 否 | - |
--network | 仅包含网络接口 | 否 | - |
--block-devices | 仅包含块设备 | 否 | - |
--licenses | 包含仓库许可证状态 | 否 | - |
--storage-health | 显示每个仓库的 BTRFS 碎片化和 reflink 节省量 | 否 | - |
--datastores | 显示已挂接的数据存储(挂载、挂接、使用情况) | 否 | - |
--health-check | 健康检查模式 - 如果有不健康的容器,将以代码 2 退出 | 否 | - |
--stability-check | 稳定性检查模式 - 如果有失败/重启的服务,将以代码 2 退出 | 否 | - |
--search <text> | 按名称过滤仓库 | 否 | - |
--sync-certs | 查询后也从机器拉取 ACME 证书缓存 | 否 | - |
--strict | 如果任何容器超过健康漂移阈值,以非零(代码 2)退出 | 否 | - |
4. 集群管理
配置和管理集群:私有网络上命名的节点池集合(ceph、k8s-server、k8s-agent、hyperconverged)。池成员会具体化为机器,因此每个 -m 命令都能在它们上面使用。
4.1 create
声明并配置集群:机器、Ceph 池和 Kubernetes。传入 --provider 和 --pool 可一步完成声明;不带参数的 create 则会配置已声明的集群。
rdc cluster create <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--provider <provider> | 服务提供商:一个 cloudProviders 键,或 'kvm' | 否 | - |
--pool <spec...> | 节点池规格 名称:角色:数量[:大小](角色:ceph|k8s-server|k8s-agent|hyperconverged) | 否 | - |
--declare-only | 仅在配置中记录集群,不进行配置(provision) | 否 | - |
--network-cidr <cidr> | 私有网络 CIDR(例如 10.0.0.0/24) | 否 | - |
--network-primitive <primitive> | 网络基元(例如 vlan、vpc、network) | 否 | - |
--control-node <machine> | 显式指定控制节点机器(默认为第一个 k8s-server 成员) | 否 | - |
--net-name <name> | KVM:此集群的 libvirt 网络(例如 renet12) | 否 | - |
--net-base <prefix> | KVM:网络前缀,即前三段(例如 192.168.112) | 否 | - |
--net-offset <n> | KVM:派生地址时加到每个 VM id 上的偏移量 | 否 | - |
--control-id <n> | KVM:控制与镜像仓库节点的 VM id(默认:1) | 否 | - |
--docker-registry <endpoint> | KVM:此集群中 VM 内的 Docker 镜像仓库端点 | 否 | - |
--ssh-user <user> | 已配置成员使用的 SSH 用户 | 否 | - |
--base-domain <domain> | 集群公共 DNS 的基础域名(否则从同级机器继承) | 否 | - |
--control-ds-size <size> | 锚点控制数据存储的大小(默认 10G) | 否 | - |
--control-ds-backend <backend> | 锚点控制数据存储后端:local | ceph(默认:集群含 ceph 时为 ceph,否则为 local) | 否 | - |
--control-ds-pool <pool> | 锚点控制数据存储所用的 Ceph rbd 池(ceph 后端) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.2 status
列出所有集群,或使用 --name 显示单个集群的完整配置。
rdc cluster status [cluster]
4.3 scale
更改节点池的成员数量(添加/移除机器,加入/清空节点)。k8s-agent 节点池原地扩缩容;ceph 节点池的扩容直接通过 cephadm 完成。
rdc cluster scale <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--pool <pool> | 节点池名称 | 是 | - |
--count <n> | 期望的成员数量 | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.4 destroy
拆除已配置的成员,并将集群及其机器从配置中移除。
rdc cluster destroy <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--force | 跳过确认,并在拆除出错时继续执行 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.5 kubeconfig
通过 SSH 从集群控制节点获取 kubeconfig,并以 0600 权限在本地为 kubectl 缓存。
rdc cluster kubeconfig <cluster>
4.6 fork
将整个集群(包括其仓库的数据)克隆到一个新集群:协调对集群镜像和 PV 镜像的写时复制,然后重写节点身份,使 fork 能在新地址上启动。父集群保持运行。
rdc cluster fork <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--tag <tag> | fork 标签 | 是 | - |
--to <dest-cluster> | 承载 fork 的目标集群(其控制节点和 agent 节点);集群不能 fork 到自身的机器上,因为两个 k3s 无法共享同一个主机网络命名空间 | 是 | - |
--writes <disposition> | fork 的写入方式:local(临时性 dm-COW 覆盖层,不占用 Ceph 空间) | ceph(持久克隆)。默认 local | 否 | - |
--up | 在 fork 启动后拉起其中的仓库,并以集群健康状况作为门禁检查 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.7 migrate
以较短的切换时间(热预拷贝,然后在目标端停止并重启),将整个集群(包括其仓库的数据)迁移到另一台机器或数据中心。
rdc cluster migrate <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--to <dest-cluster> | 目标位置 | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.8 join
将一台已注册的现有机器纳入集群,作为其 Kubernetes agent 节点;使用与锚点搭建、节点重新加入时相同的、由 CA 派生的 join 令牌。
rdc cluster join <machine> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--cluster <name> | 要加入的目标集群 | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.9 evict
清空节点、删除其 Node 对象,并清除其集群成员关系。集群由机器自动推断得出;仍挂载着数据存储的机器会被拒绝执行。
rdc cluster evict <machine> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--force | 节点已失效时跳过清空步骤 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.10 rehearse
对发布/升级进行演练:将集群以一次性临时 fork 的形式 fork 到目标位置(writes=local,不含 secret 的 role=rehearsal),启动它,进行健康门禁检查,然后丢弃。全程不会触碰父集群。
rdc cluster rehearse <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--on <dest-cluster> | 启动一次性演练所在的目标集群 | 是 | - |
--tag <tag> | 演练 fork 的可选标签(默认使用时间戳) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
4.11 snapshot
整个集群的时间点快照。通过 Ceph 的组快照,为集群拥有的所有基于 rbd 的数据存储创建一个崩溃一致的同一时刻快照:不停止任何服务,集群也感知不到。local 后端的数据存储没有块级组快照原语,因此不在此时刻范围内,并会如实报告。该时刻是崩溃一致的,而非应用一致的:如果需要确保某次写入被包含在快照中,请先执行同步(sync)。
create
在同一时刻为集群中所有基于 rbd 的数据存储创建快照。不停止任何服务。集群中任何 local 后端的数据存储都被列为该时刻之外:不属于此次快照。该时刻是崩溃一致的,而非应用一致的:如果需要确保某次写入被包含在快照中,请先执行同步(sync)。
rdc cluster snapshot create <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--snapshot <label> | 快照标签(默认:UTC 时间戳) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
list
列出集群的组快照。
rdc cluster snapshot list <cluster> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
5. MCP 服务器
用于 AI 代理的 Model Context Protocol 服务器
5.1 serve
启动 MCP 服务器(stdio 传输)
rdc mcp serve [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--config <name> | 用于所有命令的配置名称 | 否 | - |
--timeout <ms> | 默认命令超时时间(毫秒) | 否 | 120000 |
6. 仓库生命周期
在机器上部署和管理加密仓库。关键子命令:create、up(部署)、down(停止)、fork(即时 CoW 克隆)、delete、push/pull(备份)、sync(文件传输)。生命周期:repo create → repo up → repo down。有关架构、路由和环境变量的详细信息,请参阅 rdc --help 中的关键概念。
6.1 up
部署或更新仓库(挂载并运行调用 renet compose 的 Rediaccfile up)。机器由引用的放置位置推导得出。代理路由在部署后约 3 秒生效。完成后会打印 HTTP 暴露服务的 URL 格式(rediacc.service_port 标签)。首次部署和 fork 会自动挂载。CRIU checkpoint 恢复会自动检测;使用 --skip-checkpoint 可强制全新启动。使用 --all --machine <m> 可部署某台机器上的所有仓库。
rdc repo up [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--no-start | 挂载并准备仓库,但不运行其 up() 步骤(合并了已弃用的 'repo mount':LUKS 解锁,以及针对集群仓库的 PV 生成)。 | 否 | - |
--skip-checkpoint | 即使存在 checkpoint 数据也跳过 CRIU checkpoint 恢复(强制全新启动) | 否 | - |
--tls | 为此仓库请求专用 TLS 证书 (分支默认使用共享机器证书) | 否 | - |
--no-wait | 容器启动后立即返回;健康检查在后台继续 | 否 | - |
--all | 部署所有归属于 --machine 的仓库(批量形式) | 否 | - |
-m, --machine <name> | 配合 --all 使用:要对其仓库执行批量操作的机器 | 否 | - |
--include-forks | 同时挂载/启动分叉的仓库 | 否 | - |
--parallel | 并发启动仓库 | 否 | - |
--concurrency <n> | 最大并发仓库数 (默认: 3) | 否 | 3 |
-y, --yes | 跳过批量操作确认 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
6.2 down
停止仓库的 Docker 容器(通过 renet compose 运行 Rediaccfile 的 down)。机器由引用的放置位置推导得出。不会卸载加密卷——仓库仍保持挂载状态,可通过 'repo up' 重新启动。使用 --unmount 可在停止后同时关闭 LUKS 容器(合并了已弃用的 'repo unmount')。使用 --checkpoint 可在停止前保存 CRIU 进程状态(下次 'repo up' 会自动恢复)。使用 --all --machine <m> 可停止某台机器上的所有仓库。
rdc repo down [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--unmount | 停止后同时卸载(关闭 LUKS 容器)。在 'repo resize' 之前或需要完全保护卷时为必需操作 | 否 | - |
--checkpoint | 停止前创建 CRIU checkpoint(保存进程内存状态,以便后续通过 'repo up' 恢复) | 否 | - |
--all | 停止所有归属于 --machine 的仓库(批量形式) | 否 | - |
-m, --machine <name> | 配合 --all 使用:要对其仓库执行批量操作的机器 | 否 | - |
--parallel | 并发启动仓库 | 否 | - |
--concurrency <n> | 最大并发仓库数 (默认: 3) | 否 | 3 |
-y, --yes | 跳过批量操作确认 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
6.3 status
获取仓库状态
rdc repo status <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.4 cat
读取仓库内文件的有界窗口并写入 stdout(服务端限制;诊断信息输出到 stderr)
rdc repo cat <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--remote-file <path> | 要读取的文件路径,相对于仓库挂载根目录 | 是 | - |
--max-bytes <n> | 最大读取和打印字节数(默认 1 MiB,上限 50 MiB) | 否 | - |
--offset <n> | 开始读取的字节偏移量 | 否 | - |
--head <lines> | 仅打印前 N 行(不能与字节范围组合使用) | 否 | - |
--tail <lines> | 仅打印最后 N 行(不能与字节范围组合使用) | 否 | - |
--stat | 仅打印大小、类型和修改时间;不读取内容 | 否 | - |
--force-binary | 允许读取二进制(含 NUL)内容 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.5 diff
在两个写时复制(CoW)分支仓库之间进行 git 风格的文件级差异比较。报告新增、修改、删除和重命名的文件。将由 --name 指定的仓库(目标/新侧)与从本地配置解析出的父级,或与显式的 --base 仓库(基准/旧侧)进行比较。仅使用元数据,与大小无关:在不解密的情况下以块级别对加密的 LUKS 镜像求差,因此 1 GB 与 100 GB 仓库在相同的毫秒内完成差分。
rdc repo diff <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--base <ref> | 用于比较的仓库(基准/旧侧);默认为 --name 的父级 | 否 | - |
--name-only | 仅打印更改的文件路径,每行一个(不含状态字母) | 否 | - |
--stat | 显示每个文件的变更量(字节和块增量)及总计 | 否 | - |
--content [path] | 为单个文件显示统一文本差异(需提供文件路径) | 否 | - |
--fast | 信任块过滤器;跳过内容哈希确认(可能过报 "已修改") | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.6 list
列出机器上的仓库
rdc repo list [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 否 | - |
--datastore <name> | 列出此数据存储中的仓库(解析为当前持有该数据存储的机器) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.7 create
创建新仓库。只需指定一次其归属位置:机器或数据存储。
rdc repo create <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 否 | - |
--datastore <name> | 承载该仓库的命名数据存储(docker 分层,或集群形式) | 否 | - |
--size <size> | 仓库大小(例如 10G、100G、1T) | 否 | - |
--no-docker | 创建后跳过启动 Docker 守护进程 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.8 delete
删除仓库及其数据。配置条目将被保留;使用 --archive-config 可将凭据移至 deletedRepositories,以便通过 'repo admin archive restore' 恢复。接受位置参数 <ref>;不带标签的名称会解析为 grand 主线,若多个仓库共用同一基础名称则会被拒绝,此时请传入 name:tag 以指定某个 fork。
rdc repo delete <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--archive-config | 将配置条目移至 deletedRepositories 以便后续恢复 | 否 | - |
-y, --yes | 跳过确认提示 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
6.9 commit
将已挂载的工作 fork 的当前状态冻结为新的不可变 commit(类似 git)。该 commit 在卷内记录其提交信息、作者、时间戳和父 commit(因此可随 push 一同传输),并被标记为只读——它拒绝挂载。工作 fork 保持不变,就像 git 不会改动工作树一样。使用 'rdc repo checkout' 检出某个 commit 以获取可写副本。
rdc repo commit <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--message <msg> | Commit 信息 | 是 | - |
--author <author> | Commit 作者 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.10 branch
创建一个指向工作 fork 当前 commit(其顶端)的命名 branch 引用。Branch 引用保存在 CLI 配置中(machine = 对象存储,config = 引用存储)。
rdc repo branch <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--branch <branch> | 新分支的名称 | 是 | - |
6.11 checkout
通过 reflink 克隆将不可变的 commit(或 branch 顶端)克隆为一个全新的可写工作 fork,并将 HEAD 指向它。近乎即时且耗时与体积无关(BTRFS reflink)。
rdc repo checkout <commit-or-branch-ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--tag <name> | 新的可写工作 fork 的名称 | 是 | - |
--from <workingFork> | 将位置参数 <commit-or-branch-ref> 解析为此工作 fork 上的分支名称 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.12 log
打印从工作 fork 的当前 commit(或某个 commit 引用)可达的提交历史,沿 'rdc repo commit' 记录的父 commit 链进行遍历。读取的是卷外镜像,因此不会解锁任何 commit。
rdc repo log <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
6.13 merge
将源 commit 或 fork merge 到目标工作 fork 中。实时目标绝不会被就地修改:结果会在 reflink 克隆中构建,并以原子方式换入。已挂载或正在运行的目标会被拒绝,除非使用 --force,该选项会先将其干净地静默停止。不带 --resolve 时执行整镜像的 take-theirs(目标变为源);带 --resolve ours|theirs 时,则针对共同祖先执行逐文件的三方合并,采用各方的独有更改,并按该标志解析双方冲突。
rdc repo merge <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--from <source> | 要从中 merge 的源 commit 或 fork | 是 | - |
--force | 先静默停止已挂载/正在运行的目标,然后 merge(绝不修改实时挂载) | 否 | - |
| `—resolve <ours | theirs>` | 三方合并的逐文件冲突解决方式:'ours' 保留目标的版本,'theirs' 采用源的版本。省略则对整个镜像执行快进(采用 theirs)。 | 否 |
--base <guid> | 三方合并的共同祖先 commit GUID(与 --resolve 配合使用)。默认为源 commit 的父级或目标的当前 commit。 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.14 gc
删除机器上没有任何分支或 HEAD 可达的不可变提交对象(可达性垃圾回收)。机器是对象存储,CLI 配置是引用存储。默认仅试运行:传入 --apply 才会删除。绝不触及已挂载的对象或正在使用的分叉。
rdc repo gc [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
--apply | 实际删除不可达的提交(默认仅为试运行预览) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.15 fork
创建仓库的 CoW(写时复制)fork。无论仓库大小如何,FORK 都近乎即时且耗时恒定:BTRFS reflink 克隆底层镜像,因此 100 GB 与 1 GB 的仓库 fork 所需时间同样只有几秒。fork 会获得全新的 GUID、networkId、IP 范围和自动路由域名({service}-fork-{tag}.{repo}.{machine}.{baseDomain}),是完全独立的副本。支持在线 fork,父仓库可以继续运行。fork 会自动继承父仓库的加密凭据。使用 --checkpoint 可在 fork 前捕获 CRIU 进程状态,fork 会在首次 'repo up' 时自动恢复(保留内存状态)。跨机器 FORK:请先在本地 fork,再进行传输:(1) rdc repo fork <parent-ref> --tag <name>,(2) rdc repo push <fork-ref> --to <target-machine>,(3) rdc backup restore <fork-ref> --as <fork-name> -m <target-machine> --up。警告:不要仅使用 "repo push" 进行 fork,它会创建一个使用相同 GUID 的原始副本(而非独立的 fork)。请务必先 fork 以获得新的身份标识。自动路由使用仓库名称,因此每个 fork 都会自动获得唯一域名。
rdc repo fork <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--tag <name> | 分支的标签(创建 名称:标签) | 是 | - |
--checkpoint | fork 前在源上创建 CRIU checkpoint(捕获进程内存状态以便在 fork 上恢复) | 否 | - |
--immutable | 将分叉标记为只读:它会拒绝挂载,使其镜像永久保持字节级稳定(用于跨机器增量推送的冻结提交/基线) | 否 | - |
--up | fork后挂载并启动服务(fork + mount + up 一条命令完成) | 否 | - |
--no-wait | 与 --up 搭配:容器启动后立即返回;健康检查在后台继续(适合一次性分叉) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.16 replicate
无论数据库大小如何,都能在数秒内为仓库创建 N 个读副本。先对数据存储做一次快照,然后在集群各节点间分散执行 N 次常数时间的 fork-attach(写时复制,本地写入为一次性丢弃式),并应用生成的覆盖配置:每个副本各绑定一个 PersistentVolume、一个 StatefulSet,以及两个 Service(指向主库的 {repo}-rw,覆盖所有副本的 {repo}-ro)。副本是某一时间点的静态拷贝:没有复制流,也不保证 read-your-writes;每个副本在开始对外服务前都会先执行一次崩溃恢复。可以用 'repo replicate refresh' 刷新它们。副本集是受管理的状态:用 'repo replicate status' 查看,用 'repo replicate remove' 移除。
status
显示受管理的副本集:副本、承载节点、fork 出的数据存储、快照,以及刷新时间戳。
rdc repo replicate status <ref>
remove
移除一个副本集:删除其生成的 k8s 对象(按标签定位范围)、丢弃其 fork 出的数据存储、删除其快照,并清除相应状态记录。基础设施相关步骤是尽力而为的,因此即便集群部分节点已经消失,移除操作最终仍会收敛完成。
rdc repo replicate remove <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
refresh
将每个副本逐一(每次一个)滚动切换到新的时间点快照:重启该副本 Pod,在相同路径下丢弃并重新 fork 其数据存储,待 readiness 探针通过后重新接入流量。整个过程中,其余 N-1 个副本会持续提供服务。
rdc repo replicate refresh <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
6.17 canary
让新镜像与稳定版并行运行,并按百分比在两者间拆分实时流量(发布阶梯第 2 级)。在同一份实时数据上创建一个 canary Deployment + Service(不使用 fork:如果 canary 用户读取的是 fork 出的数据,就会读到过期数据,写入内容也会进入注定被丢弃的副本),并让 Rediacc 代理将稳定版主机名流量中指定的百分比路由给它。权重为 0 时 canary 保持暗启动;权重为 100 即完成 blue/green 切换。每次修改 canary 之前,都会自动为集群的数据存储创建一次组快照(发布阶梯第 0 级),作为万能的回滚手段。两个版本之间的 schema 兼容性(expand-contract 方式)由应用程序自行负责。对于会破坏 schema 的发布,请改用 blue/green:fork 该仓库(即时完成,包含数据),将 fork 的 Service 权重设为 100 指向这里,再通过重启未被触碰的父仓库来回滚;切换之后发生的写入只存在于新副本中,因此回滚窗口的长短是一个策略决定。
status
显示受管理的 canary 组:权重、镜像、稳定版 Service,以及最近一次的发布回滚快照。
rdc repo canary status <ref>
weight
更改路由到 canary 的流量百分比。会先创建一份新的发布回滚用组快照,再重新应用覆盖配置;代理会在下一次刷新周期应用新的流量拆分比例。权重设为 100 时,所有流量都会发往新版本(即 blue/green 切换)。
rdc repo canary weight <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--weight <percent> | 路由到 canary 的流量百分比(整数 0-100;0 表示暗启动,100 表示完全切换) | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
remove
移除 canary 的 Deployment 和 Service(按标签定位范围);之后稳定版 Service 将重新承担 100% 的流量。发布回滚用的快照会被保留,需用数据存储快照相关命令自行清理。
rdc repo canary remove <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
create
在稳定版本旁运行一个新镜像,并向其发送一定比例的实时流量。canary 与仓库共享实时数据(不使用 fork),因此两个版本之间的 schema 兼容性由应用程序自行负责。执行前会先为集群的数据存储创建一次组快照,作为撤销手段。
rdc repo canary create <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--image <image> | canary Deployment 运行的新镜像(针对共享的生产数据) | 是 | - |
--port <port> | 应用对外提供服务的端口(必须与稳定版 Service 一致) | 是 | - |
--weight <percent> | 路由到 canary 的流量百分比(整数 0-100;0 表示暗启动,100 表示完全切换) | 是 | - |
--service <name> | 用于拆分流量的稳定版 Service(默认:仓库名) | 否 | - |
--replicas <n> | canary Deployment 的副本数量(默认:1) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.18 resize
离线调整仓库大小(支持扩展和缩减)
rdc repo resize <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--size <size> | 新的仓库大小(例如 10G、100G、1T) | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.19 expand
在线扩展已挂载的仓库(零停机)
rdc repo expand <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--size <size> | 新的仓库大小(例如 10G、100G、1T) | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.20 trim
从已挂载的仓库回收数据存储池空间(在线,零停机)。通过 fstrim 将仓库内已删除的块归还给存储池。不带引用时,会修剪 -m 上所有已挂载的仓库以及数据存储本身。正在备份的仓库会跳过 fstrim,但 --docker 回收仍会执行
rdc repo trim [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--docker | 回收 Docker 空间(已停止的容器、悬空镜像、构建缓存);即使在备份快照处于活动状态时也会执行 | 否 | - |
--docker-volumes | 同时清理未使用的 Docker 卷 | 否 | - |
--report-only | 仅显示 discard 状态和可回收空间估算,不执行修剪 | 否 | - |
-m, --machine <name> | 目标机器名称 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.21 policy
管理机器存储维护器所执行的自动大小策略:当仓库快满时在线扩大其配额(绝不超过 max-quota,存储池空间不足时也不扩大),并按计划执行修剪。不存在自动缩小;如需缩小请使用 'repo resize'。不带引用时,操作的是 -m 上的机器级默认策略
set
设置大小策略字段。只更改你传入的标志;其他已保存字段保持原值。启用自动扩容必须提供 --max-quota:该上限是你对存储池超额配置的明确同意
rdc repo policy set [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--auto-grow <bool> | 启用在线自动扩大配额(true/false) | 否 | - |
--max-quota <size> | 自动扩容上限(例如 200G);启用自动扩容时必填 | 否 | - |
--grow-threshold <percent> | 触发扩容的文件系统使用率百分比(默认 85) | 否 | - |
--grow-step <step> | 每次扩容量:绝对值(10G)或配额百分比(20%) | 否 | - |
--auto-trim <bool> | 启用计划修剪(true/false) | 否 | - |
--trim-interval <hours> | 自动修剪之间的最少小时数(默认 24) | 否 | - |
-m, --machine <name> | 目标机器名称 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
get
显示已保存的机器默认值、仓库覆盖值(带引用时)以及维护器实际执行的合并后有效策略
rdc repo policy get [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.22 push
将仓库推送到远程(机器或存储)。目标类型从配置中自动检测。机器间传输时,加密的仓库镜像会以相同的 GUID 复制 — 这是备份/迁移,而非 fork。要创建独立的 fork,请先使用 'repo fork',再执行 push。推送后的副本会作为备份产物存在:请在目标机器上使用 'backup restore <ref> --as <name> -m <target> --up' 启动它
rdc repo push <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--to <remote> | 目标机器或存储名称(从配置中自动检测) | 否 | - |
--to-machine <machine> | — | 否 | - |
--provision <provider> | 如果目标机器不存在,通过云提供商自动配置 | 否 | - |
--checkpoint | 备份前创建CRIU检查点(捕获进程内存状态用于实时迁移) | 否 | - |
--force | 强制覆盖现有备份 | 否 | - |
-w, --watch | 监视更改 | 否 | - |
--bwlimit <limit> | rsync 传输带宽限制(例如 "6M"、"10M") | 否 | - |
--delta-base <guid> | 在两台机器上字节完全相同的不可变基准 GUID;仅传输已更改的块(机器目标)。省略以自动选择基准 | 否 | - |
--strategy <strategy> | 使用增量基准时的块增量策略:auto、physical 或 shared | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.23 pull
从远程(机器或存储)拉取仓库。省略名称以拉取所有仓库。源类型从配置中自动检测。使用--up在pull后部署
rdc repo pull <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--from <remote> | 源机器或存储名称(从配置中自动检测) | 否 | - |
--from-machine <machine> | — | 否 | - |
--force | 强制覆盖现有仓库 | 否 | - |
--up | pull后,在此机器上挂载并部署仓库 | 否 | - |
-w, --watch | 监视更改 | 否 | - |
--bwlimit <limit> | rsync 传输带宽限制(例如 "6M"、"10M") | 否 | - |
--delta-base <guid> | 在两台机器上字节完全相同的不可变基准 GUID;仅接收已更改的块(机器源) | 否 | - |
--strategy <strategy> | 使用增量基准时的块增量策略:auto、physical 或 shared | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.24 migrate
以最短停机时间将仓库从一台机器实时迁移到另一台机器。两阶段 rsync:在运行期间进行批量传输,然后短暂停止以进行增量同步。迁移整个仓库(路由会重新指向新位置),迁移成功后会删除源镜像(使用 --keep-source 可保留它们)。支持用于进程内存状态迁移的 CRIU 检查点,以及目标机器的自动置备
rdc repo migrate <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--to <place> | 目标机器或集群 | 是 | - |
--provision <provider> | 通过云服务商自动配置目标机器(例如 hetzner、linode) | 否 | - |
--bwlimit <limit> | rsync 传输带宽限制(例如 10M) | 否 | - |
--checkpoint | CRIU 实时迁移:捕获和恢复进程内存状态 | 否 | - |
--delta-base <guid> | 用于切换增量的不可变基准 GUID(高级;默认使用阶段 1 的基准) | 否 | - |
--strategy <strategy> | 切换时的块增量策略:auto、physical 或 shared | 否 | - |
--skip-dns | 迁移后跳过 DNS 记录切换 | 否 | - |
--keep-source | 成功迁移后保留源镜像(默认会被删除;残留副本无法通过任何配置记录寻址,reconcile 会将其标记为孤立项) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.25 sync
同步仓库和文件(批量推送/拉取,文件传输)
upload
上传文件到仓库
rdc repo sync upload <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--local <paths...> | 一个或多个本地文件或目录路径(默认:当前目录) | 否 | - |
--remote <path> | 仓库内的远程子目录路径 | 否 | - |
--remote-file <path> | 要上传到的单个远程文件路径(相对于仓库根目录)。与 --remote 互斥。 | 否 | - |
--mirror | 镜像模式 - 删除本地不存在的远程文件 | 否 | - |
--verify | 同步后使用校验和验证文件 | 否 | - |
--confirm | 预览更改并在同步前请求确认 | 否 | - |
--exclude <patterns...> | 从同步中排除的模式 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
download
从仓库下载文件
rdc repo sync download <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--local <path> | 本地目录路径(默认:当前目录) | 否 | - |
--remote <path> | 仓库内的远程子目录路径 | 否 | - |
--remote-file <path> | 仓库中的远程文件路径(用于单文件传输,作为 --remote 的替代项) | 否 | - |
--mirror | 镜像模式 - 删除远程不存在的本地文件 | 否 | - |
--verify | 同步后使用校验和验证文件 | 否 | - |
--confirm | 预览更改并在同步前请求确认 | 否 | - |
--exclude <patterns...> | 从同步中排除的模式 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
status
检查同步状态并比较本地/远程文件
rdc repo sync status <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--local <path> | 本地目录路径(默认:当前目录) | 否 | - |
--remote <path> | 仓库内的远程子目录路径 | 否 | - |
--remote-file <path> | 仓库中的远程文件路径(用于单文件传输,作为 --remote 的替代项) | 否 | - |
6.26 tunnel
创建到远程机器上容器端口的 SSH 端口转发隧道。当无歧义时自动检测容器和端口。隧道保持打开直到按下 Ctrl+C
rdc repo tunnel <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-c, --container <name> | 容器名称(仅一个运行时自动检测) | 否 | - |
--port <port> | 要转发的远程容器端口 | 否 | - |
--local <port> | 本地端口(默认与远程端口相同) | 否 | - |
--url-only | 隧道就绪后只输出本地 URL(机器可读) | 否 | - |
6.27 secret
管理部署时注入的每仓库密钥。仅写入:get 仅返回摘要(永不返回明文),set/unset 需要 --current 摘要匹配或 --rotate-secret。两种传递模式:env(REDIACC_SECRET_<KEY>)和 file(通过 compose `secrets:` 挂载的 tmpfs,路径为 /var/run/rediacc/secrets/<networkId>/<KEY>)。密钥永远不会进入加密的 LUKS 镜像;fork 不会继承任何密钥。
get
显示密钥的 SHA-256 摘要。明文值按设计永不返回(仅写入)。可在后续的 set/unset 中使用 --current 验证一个你已知的值,或通过 `set --rotate-secret` 进行轮换。
rdc repo secret get <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--key <KEY> | UPPER_SNAKE_CASE 格式的密钥(最多 64 个字符)。在 env 模式下作为 REDIACC_SECRET_<KEY> 暴露,在 file 模式下作为容器中的 /run/secrets/<key>。 | 是 | - |
list
列出密钥的键和模式(绝不显示值,绝不显示摘要)。
rdc repo secret list <ref>
set
设置或覆盖一个密钥。Fork 不继承;请在 fork 上显式设置。在代理上下文中,需要 --current 摘要匹配(passwd 风格)。
rdc repo secret set <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--key <KEY> | UPPER_SNAKE_CASE 格式的密钥(最多 64 个字符)。在 env 模式下作为 REDIACC_SECRET_<KEY> 暴露,在 file 模式下作为容器中的 /run/secrets/<key>。 | 是 | - |
--value <value> | 密钥值。传递 `-` 以从 stdin 读取(避免在 shell 历史记录中暴露)。 | 是 | - |
--mode <mode> | 传递模式:'env'(在容器环境中可见,docker inspect)或 'file'(tmpfs 文件,永不出现在 env 中)。默认:file。 | 否 | file |
--current <value> | 先前的明文值(passwd 风格前置条件)。覆盖或删除时必填;与 --rotate-secret 互斥。 | 否 | - |
--rotate-secret | 确认轮换;跳过 --current 前置条件(作为轮换审计)。在不验证先前值的情况下故意轮换时使用。 | 否 | - |
unset
删除一个密钥。在代理上下文中,需要 --current 摘要匹配。
rdc repo secret unset <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--key <KEY> | UPPER_SNAKE_CASE 格式的密钥(最多 64 个字符)。在 env 模式下作为 REDIACC_SECRET_<KEY> 暴露,在 file 模式下作为容器中的 /run/secrets/<key>。 | 是 | - |
--current <value> | 先前的明文值(passwd 风格前置条件)。覆盖或删除时必填;与 --rotate-secret 互斥。 | 否 | - |
--rotate-secret | 确认轮换;跳过 --current 前置条件(作为轮换审计)。在不验证先前值的情况下故意轮换时使用。 | 否 | - |
6.28 admin
仓库管理与维护相关操作。
archive
已归档仓库记录的簿记管理。
列出已归档的仓库凭据
rdc repo admin archive list
永久删除所有已归档的凭据
rdc repo admin archive purge [name] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-y, --yes | 跳过确认提示 | 否 | - |
恢复已归档的仓库凭据
rdc repo admin archive restore <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--new-name <name> | 新资源名称 | 否 | - |
validate
验证仓库完整性
rdc repo admin validate <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
fsck
对照机器上实际存在的对象校验 CLI 配置引用(分支、HEAD)。报告悬空引用(指向缺失对象的引用)和孤立提交(没有任何引用可达的不可变提交)。只读操作。
rdc repo admin fsck [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
ownership
更改仓库目录所有权
rdc repo admin ownership <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--uid <uid> | 所有者 UID(默认: 7111) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
autostart
管理开机时仓库的自动启动
为仓库启用自动启动
rdc repo admin autostart enable [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
为仓库禁用自动启动
rdc repo admin autostart disable [ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
列出已启用自动启动的仓库
rdc repo admin autostart list [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
template
将模板应用到仓库
列出 CLI 内置的所有部署模板
rdc repo admin template list
将模板应用到仓库。使用内置模板名称(例如 app-postgres),或使用 --file 指定自定义 JSON 模板。Rediaccfile 生命周期:up() 启动容器(在此拉取镜像、生成配置),down() 停止容器。最小 Rediaccfile 示例:up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }。重要:Rediaccfile 必须使用 'renet compose','docker compose' 会被拒绝。环境变量:分为两个层级:(a) Rediaccfile shell:${SVCNAME_IP}(例如 APP_IP)、${REDIACC_WORKING_DIR}、${REDIACC_NETWORK_ID}。(b) 容器内部:renet 会自动注入 SERVICE_IP 和 REDIACC_NETWORK_ID 环境变量。eBPF 绑定重写会透明地处理 IP 隔离,因此应用可以绑定到 0.0.0.0,内核会将其重写为正确的回环 IP。健康检查可以使用 localhost。network_mode:host 会被自动注入,ports: 会被忽略。存储:${REDIACC_WORKING_DIR}/... 绑定挂载和 Docker named volume 都是安全的:Docker 的 data-root 位于加密的 LUKS 挂载内部。重启策略:重启策略是安全的,renet 会为了 CRIU 兼容性自动剥离它们,watchdog 负责恢复。Compose:请勿添加 network_mode 或 rediacc.* 标签(renet 会自动注入)。多项目:将每个子项目放在各自独立的子目录中,并各自拥有自己的 Rediaccfile;renet 会自动发现并按顺序运行它们。HTTPS 路由:(A) 自动路由(fork 友好,推荐):请勿添加 traefik.enable。Renet 会自动生成 https://{serviceName}.{repoName}.{machineName}.{baseDomain}。非 80 端口需添加 rediacc.service_port=<port> 标签。每个 fork 都会获得唯一的域名。(B) Traefik 标签(自定义域名,非 fork 友好):traefik.enable=true、traefik.http.routers.<n>.rule=Host(`domain`)、traefik.http.routers.<n>.entrypoints=websecure,websecure-v6、traefik.http.routers.<n>.tls.certresolver=letsencrypt、traefik.http.services.<n>.loadbalancer.server.port=<port>。TCP/UDP 请使用:rediacc.tcp_ports=3306 / rediacc.udp_ports=53
rdc repo admin template apply <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--template <name> | 要应用的模板 | 是 | - |
--file <path> | 自定义模板 JSON 文件路径({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}):覆盖内置模板名称 | 否 | - |
--grand <name> | 主仓库名称 (自动解析为 GUID) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.29 promote
用分支的数据替换主仓库的数据。主仓库保留其身份(GUID、networkId、域名、自动启动、备份链),但获取分支的升级数据。旧的生产数据作为备份分支保留。用途:在分支上测试升级 → 验证 → 接管到生产环境。
rdc repo promote <fork-ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-y, --yes | 跳过确认提示 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
6.30 logs
显示仓库容器的应用日志。docker 仓库从其自身的 Docker 守护进程读取;kubernetes 仓库读取其命名空间中的 pod 日志。若仓库运行多个容器,请使用 --container 指定所需容器。
rdc repo logs <ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-c, --container <name> | 要读取的容器(仅当仓库运行多个容器时才需要) | 否 | - |
-f, --follow | 持续流式输出新日志行,直到被中断 | 否 | - |
--lines <n> | 显示多少行历史日志(默认:100) | 否 | 100 |
--timestamps | 在每行前加上时间戳 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
6.31 exec
在仓库容器内运行命令。命令自身的退出码会原样透传,因此可用于脚本和条件判断。docker 仓库通过其 Docker 守护进程运行命令;kubernetes 仓库在其命名空间中运行命令。
rdc repo exec <ref> <cmd...> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-c, --container <name> | 要在其中运行的容器(仅当仓库运行多个容器时才需要) | 否 | - |
-i, --interactive | 分配终端(用于需要终端的命令) | 否 | - |
-u, --user <user> | 以哪个用户身份运行命令 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
7. 分离任务
管理机器上的分离任务:列出任务、查看状态、回放或跟踪任务的事件日志、取消任务,或清理已完成的任务。分离任务在机器上通过 systemd 运行,因此不会因连接断开而中断,之后可以重新连接查看。
7.1 list
列出机器上的分离任务,按最新排列在前
rdc job list [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
7.2 status
显示分离任务的状态
rdc job status <job-id> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
7.3 logs
回放或跟踪分离任务的事件日志
rdc job logs <job-id> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
-f, --follow | 持续输出,直到任务完成 | 否 | - |
--since-line <n> | 从这一行数之后继续(即你已收到的行数) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
7.4 cancel
取消正在运行的分离任务
rdc job cancel <job-id> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
-y, --yes | 跳过确认提示 | 否 | - |
7.5 gc
删除已完成的任务及其日志
rdc job gc [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
--older-than <duration> | 清理完成时间早于此小时数的任务(默认:168) | 否 | - |
-y, --yes | 跳过确认提示 | 否 | - |
8. 备份与恢复
管理备份策略、其计划运行以及产生的产物:为仓库声明策略,按需运行或恢复,并查看写入存储端点的归档。
8.1 schedule
将备份计划部署到远程机器(systemd 定时器)
rdc backup schedule [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 是 | - |
--dry-run | 预览生成的单元而不部署 | 否 | - |
--force | 即使当前有备份正在运行也继续执行(新单元在下次定时器触发时生效;正在运行的调用保留其旧单元) | 否 | - |
--reset-failed | 部署成功后清除已修改服务的 failed 状态(默认关闭,保留故障信号) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
8.2 cancel
取消远程机器上正在运行的备份
rdc backup cancel [strategy] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
8.3 list
列出机器或存储上的备份产物。
rdc backup list [artifact-ref] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 否 | - |
--storage <name> | 列出此存储端点上的产物 | 否 | - |
--path <subdir> | 存储根目录下的子目录。省略时会列出并合并 hot/ 和 cold/。 | 否 | - |
-w, --watch | 监视更改 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
8.4 restore
将备份产物转换为可运行的仓库。放置位置在此指定。
rdc backup restore <artifact-ref> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--as <name> | 恢复后仓库的名称(默认使用产物名称) | 否 | - |
-m, --machine <name> | 机器名称 | 否 | - |
--datastore <name> | 恢复到此命名数据存储中(由其挂接的机器承载) | 否 | - |
--up | 传输完成后部署恢复的仓库 | 否 | - |
--health-window <seconds> | 健康门禁检查的总时间窗口(秒,默认 300) | 否 | - |
--health-timeout <seconds> | 单次健康检查的超时时间(秒,默认 30) | 否 | - |
-y, --yes | 跳过确认提示 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
8.5 run
在远程机器上立即触发备份
rdc backup run [strategy] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 是 | - |
-w, --watch | 监视更改 | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
8.6 status
显示远程机器上的备份状态和定时器状态
rdc backup status [strategy] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 是 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
8.7 strategy
管理命名备份策略(热/冷模式、目标、调度)
set
创建或更新备份策略
rdc backup strategy set <strategy> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--destination <name> | 策略内的目标名称 | 否 | - |
--storage <name> | 存储配置名称(rclone 凭据) | 否 | - |
--cron <expression> | Cron 调度(例如 "0 * * * *" 表示每小时) | 否 | - |
--mode <mode> | 备份模式:"hot"(零停机)或 "cold"(停止、快照、重启) | 否 | - |
--bwlimit <limit> | Rclone 带宽限制(例如 "6M"、"10M:off"、"08:00,3M;22:00,10M") | 否 | - |
--include <repos> | 仅备份这些仓库(逗号分隔的名称) | 否 | - |
--exclude <repos> | 从备份中排除这些仓库(逗号分隔的名称) | 否 | - |
--folder <path> | 该目标在存储桶中的子文件夹(如 hot, cold) | 否 | - |
--enable | 启用策略或目标 | 否 | - |
--disable | 禁用策略或目标 | 否 | - |
bind
将备份策略绑定到机器,以便其调度部署到该机器
rdc backup strategy bind <strategy> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
unbind
将备份策略从机器解绑
rdc backup strategy unbind <strategy> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 目标机器名称 | 是 | - |
remove
删除备份策略或目标
rdc backup strategy remove <strategy> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--destination <name> | 仅删除此目标(保留其他目标) | 否 | - |
list
列出所有备份策略
rdc backup strategy list
show
显示备份策略详情
rdc backup strategy show [strategy]
9. 存储管理
管理外部备份存储端点(S3 及其他兼容 rclone 的目标):注册和移除端点、列出已注册的端点、浏览其中保存的产物,并清理孤立的备份。
9.1 list
列出存储端点。指定名称可查看完整详情。
rdc storage list [name] [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--reveal | 以明文显示存储配置(仅限交互式 TTY;记入审计日志) | 否 | - |
9.2 browse
浏览存储系统中的文件
rdc storage browse <storage> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--path <subpath> | 要列出的子目录路径 | 否 | “ |
9.3 prune
删除存储中不在任何配置中的孤立备份。多配置安全,带宽限期保护。
rdc storage prune <storage> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 执行机器:对存储运行 rclone list/delete 调用。必需,因为客户端不应在本地安装 rclone;存储凭据仍来自你的本地配置。 | 是 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
--force | 跳过确认提示 | 否 | - |
--force-delete-mounted | 覆盖挂载安全检查,即使源 GUID 当前在执行机器上已挂载或有正在运行的容器,也删除云备份。与 --force 不同(后者仅覆盖已归档仓库的宽限期)。 | 否 | - |
--grace-days <days> | 最近归档仓库的宽限期天数(默认:7) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
--skip-router-restart | 二进制更新后跳过重启路由服务器 | 否 | - |
9.4 add
注册一个存储端点。
rdc storage add <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--vault <json> | 保险箱内容为 JSON 字符串 | 是 | - |
9.5 import
从 rclone 配置文件导入存储
rdc storage import <file> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--name <name> | 仅导入指定的命名部分 | 否 | - |
9.6 remove
从配置中移除存储端点。
rdc storage remove <name> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-y, --yes | 跳过确认提示 | 否 | - |
--dry-run | 显示将执行的操作但不进行实际更改 | 否 | - |
10. VS Code 集成
打开 VS Code Remote SSH 连接到机器或仓库
10.1 connect
在机器上或仓库内部打开 VS Code。
rdc vscode connect <target> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-f, --folder <path> | 远程文件夹路径以打开 | 否 | - |
--url-only | 打印 VS Code URI 而不是启动 | 否 | - |
-n, --new-window | 在新 VS Code 窗口中打开 | 否 | - |
--skip-env-setup | 跳过远程环境设置 | 否 | - |
--insiders | 使用 VS Code Insiders 设置 | 否 | - |
--browser | 从仓库沙盒内提供浏览器 VS Code(无需在本地安装 VS Code) | 否 | - |
--no-open | 输出 URL 而不启动本地浏览器 | 否 | - |
--local <port> | 本地端口(默认与远程端口相同) | 否 | - |
--server-provider <id> | 浏览器 VS Code 服务器实现(openvscode、code-server) | 否 | - |
--server-archive <file> | 机器上预先暂存的服务器压缩包路径(离线安装) | 否 | - |
10.2 list
列出已配置的 VS Code SSH 连接
rdc vscode list
10.3 cleanup
移除 VS Code SSH 配置
rdc vscode cleanup [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--all | 移除所有 rediacc SSH 配置 | 否 | - |
-c, --connection <name> | 移除特定连接 | 否 | - |
10.4 check
检查 VS Code 安装和配置
rdc vscode check [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--insiders | 使用 VS Code Insiders 设置 | 否 | - |
10.5 serve
管理沙盒内的浏览器 VS Code 服务器
status
显示浏览器 VS Code 服务器是否正在运行
rdc vscode serve status <target> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--server-provider <id> | 浏览器 VS Code 服务器实现(openvscode、code-server) | 否 | - |
stop
停止浏览器 VS Code 服务器
rdc vscode serve stop <target> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--server-provider <id> | 浏览器 VS Code 服务器实现(openvscode、code-server) | 否 | - |
11. SSH 终端访问
打开到机器或仓库的 SSH 终端。目标可以是机器名称或仓库引用,仓库上下文(DOCKER_HOST、工作目录、环境变量)会自动设置。使用 `-c` 可非交互式运行单条命令。若需查看容器日志或在容器中执行一次性命令,请使用 `repo logs` 和 `repo exec`。如需 VS Code,请使用 `vscode`。
11.1 connect
在机器上打开 shell,或在已配置好 Docker 的仓库内部打开 shell。
rdc term connect <target> [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-c, --command <cmd> | 执行命令而不是交互式 shell | 否 | - |
--external | 强制在外部终端窗口中启动 | 否 | - |
--reset-home | 重置每个仓库的主目录覆盖层以全新开始 | 否 | - |
12. 快捷命令(快捷方式)
12.1 run
运行函数(快捷方式:queue create)
rdc run
12.2 trace
跟踪任务 (queue trace 的快捷方式)
rdc trace
12.3 cancel
取消任务 (queue cancel 的快捷方式)
rdc cancel
12.4 retry
重试失败的任务 (queue retry 的快捷方式)
rdc retry
13. 订阅管理
管理许可证和订阅令牌。使用 login 登录,使用 status 查看,使用 refresh 重新签发许可证。
13.1 login
使用Web门户的API令牌进行认证
rdc subscription login [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-t, --token <token> | API令牌 (rdt_...) | 否 | - |
--server <url> | 账户服务器URL | 否 | - |
13.2 logout
清除已存储的订阅令牌
rdc subscription logout
13.3 status
显示订阅状态以及某台机器的许可证状态。
rdc subscription status [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 否 | - |
13.4 refresh
从账户服务器刷新许可证。
rdc subscription refresh [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-m, --machine <name> | 机器名称 | 否 | - |
--repo <ref> | 仓库引用:name,或 name:tag,可选带 @machine(例如 shop 或 shop:test) | 否 | - |
14. CLI 更新
检查并应用CLI更新
rdc update [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--force | 即使已是最新也强制更新 | 否 | - |
--check-only | 仅检查更新,不下载 | 否 | - |
--rollback | 回滚到上一个版本 | 否 | - |
--status | 显示自动更新状态和诊断信息 | 否 | - |
--channel <channel> | 设置发布渠道 (stable 或 edge) | 否 | - |
15. 第三方致谢
打印随 rdc 一起分发的第三方组件:renet 内嵌并传递的二进制文件(CRIU、rsync、rclone)、内嵌的 Node.js 运行时,以及打包的 npm 依赖项。显示版本号、SPDX 许可证标识符,以及 GPL 合规所需的精确版本源码归档 URL。使用 --licenses 打印随发行版打包的完整 THIRD_PARTY_LICENSES 文本。
rdc credits [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--licenses | 打印随发行版打包的完整 THIRD_PARTY_LICENSES 文本 | 否 | - |
16. 系统诊断
诊断CLI环境和renet集成
rdc doctor
17. 本地 VM 操作
使用 KVM/QEMU/Hyper-V 进行本地 VM 配置和管理(自动检测平台)。不适用于远程机器 — 远程机器请使用 `machine`。关键子命令:up(启动 VM)、down(停止)、status(列出运行中的 VM)、ssh(连接到 VM)、setup(安装前置条件)、check(验证主机就绪状态)。
17.1 up
在本地创建 VM 集群
rdc ops up [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--force | 强制重启所有 VM | 否 | - |
--parallel | 并行创建 VM | 否 | - |
--basic | 最小集群(网桥 + 1 个工作节点) | 否 | - |
--lite | 跳过 VM 配置(仅查看状态) | 否 | - |
--skip-orchestration | 跳过集群编排 | 否 | - |
--backend <backend> | 虚拟化后端 (kvm|qemu,自动检测) | 否 | - |
--os <name> | VM 操作系统(例如 ubuntu-24.04、debian-12) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
17.2 down
销毁 VM 集群
rdc ops down [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--backend <backend> | 虚拟化后端 (kvm|qemu,自动检测) | 否 | - |
--debug | 启用调试输出(本地模式) | 否 | - |
17.3 status
显示 VM 集群状态
rdc ops status [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--backend <backend> | 虚拟化后端 (kvm|qemu,自动检测) | 否 | - |
17.4 ssh
通过 SSH 连接到 VM
rdc ops ssh [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--vm-id <id> | 虚拟机 ID | 是 | - |
-c, --command <cmd> | 执行命令而不是交互式 shell | 否 | - |
--backend <backend> | 虚拟化后端 (kvm|qemu,自动检测) | 否 | - |
--user <user> | VM 连接的 SSH 用户名 | 否 | - |
17.5 setup
安装虚拟化前置条件
rdc ops setup [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
--debug | 启用调试输出(本地模式) | 否 | - |
17.6 check
验证虚拟化前置条件
rdc ops check
18. 执行器服务
将此进程作为执行器运行,让客户端可以通过它执行命令,而不必自己通过 SSH 连接
rdc serve [options]
| 标志 | 描述 | 必填 | 默认值 |
|---|---|---|---|
-p, --port <port> | 监听端口 | 否 | 8080 |
--host <host> | 绑定地址 | 否 | 0.0.0.0 |
--mode <mode> | 部署位置:daemon(客户主机)或 container | 否 | daemon |
常见错误消息
当出现问题时,CLI 会提供清晰的错误消息:
| 错误 | 含义 |
|---|---|
| 需要身份验证。运行:rdc subscription login | 您需要先登录 |
| 没有活跃的配置。请使用以下命令创建:rdc config init <name> | 没有活跃的配置 — 请使用 `rdc config init` 创建一个 |
| 权限被拒绝 | 您的帐户缺少所需的权限 |
| 需要机器名称。使用 --machine <name> | 使用 `--machine` 指定机器或设置上下文默认值 |
| 需要团队名称。使用 --team 或使用以下命令设置默认值:rdc config set team <name> | 使用 `--team` 指定团队或设置上下文默认值 |
| 需要区域名称。使用 --region 或使用以下命令设置默认值:rdc config set region <name> | 使用 `--region` 指定区域或设置上下文默认值 |
输出格式
所有列表/获取命令通过 `--output` 支持多种输出格式:
rdc machine list --output json
rdc machine list --output yaml
rdc machine list --output csv
rdc machine list --output table # default
这使得将 Rediacc CLI 集成到脚本、CI/CD 管道和自动化工作流中变得容易。