跳至主要内容 跳至导航 跳至页脚

CLI 应用程序

使用 Rediacc 命令行界面进行平台管理的完整指南

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',使部署信息与机器实际状态保持一致。否-
--gone-machine-repos归档放置在已不在配置中的机器上的仓库条目。是归档而非删除:每个条目保留其凭据,在归档宽限期结束前都可恢复。仅选择此类别:除非同时传入各自的 --*-only 选项,否则跳过证书缓存、归档和交叉引用类别。否-
--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]
标志描述必填默认值
--master-password使用预先配置好的密码槽位进行无头注册(无需浏览器)否-
--master-password-stdin与 --master-password 类似,从 stdin 读取主密码否-
--api-url <url>账户服务器URL否-
--force无需确认,直接用服务器副本替换不同的本地内容否-
--config-id <id>连接到存储中已有的这份配置,而不是新建条目否-

disable

断开远程存储连接并将配置保存到本地

rdc config remote disable [options]
标志描述必填默认值
--local仅在此设备上解除链接:使用缓存副本,不联系服务器否-
-y, --yes跳过确认提示否-

status

显示远程连接状态

rdc config remote status

master-password

管理该成员的主密码(密码槽位)

change:

更改主密码:将配置密钥从此设备的注册信息重新封装到新的密码槽位

rdc config remote master-password change [options]
标志描述必填默认值
--new-master-password-stdin从 stdin 读取新的主密码(否则使用 REDIACC_NEW_STORE_MASTER_PASSWORD,或在 TTY 中提示输入)否-

refresh

强制从远程存储重新获取配置

rdc config remote refresh

versions

列出服务器保存的此配置的早期版本

rdc config remote versions [options]
标志描述必填默认值
--explain根据服务器保存的版本,显示每个版本更改的 JSON 指针否-

restore

将此配置的某个早期版本发布为最新版本

rdc config remote restore <version> [options]
标志描述必填默认值
-y, --yes跳过确认提示否-

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否-

1.17 access

管理配置的访问密钥:这类 SSH 公钥由 CLI 写入机器的 authorized_keys,并通过 from= 限制为已声明的 IPv4 和 IPv6 范围。先用 'machine access set' 将密钥绑定到机器,再用 'machine access push' 应用

add

添加访问密钥;若已存在则原地更新,并保留其机器绑定。此处指定的范围对该密钥在所有机器上生效,除非某个绑定设置了自己的范围;未指定范围时使用整个配置的范围

rdc config access add <key> [options]
标志描述必填默认值
--public-key <key>OpenSSH 公钥行,或包含公钥的文件路径是-
--hosted-executor添加观测到的托管执行器出口范围(104.28.0.0/16 和 2a09:bac0::/29)否-
--ipv4 <cidrs>CIDR 格式的 IPv4 范围(逗号分隔,例如 203.0.113.0/24)否-
--ipv6 <cidrs>CIDR 格式的 IPv6 范围(逗号分隔,例如 2001:db8::/32)否-
--no-restrict仅写入 from=,不附加 no-forwarding、no-pty 和 no-user-rc 限制否-

remove

从配置中移除访问密钥

rdc config access remove <key>

ranges

设置所有访问密钥使用的来源范围,除非密钥或其机器绑定设置了自己的范围。不带选项时显示当前范围

rdc config access ranges [options]
标志描述必填默认值
--hosted-executor添加观测到的托管执行器出口范围(104.28.0.0/16 和 2a09:bac0::/29)否-
--ipv4 <cidrs>CIDR 格式的 IPv4 范围(逗号分隔,例如 203.0.113.0/24)否-
--ipv6 <cidrs>CIDR 格式的 IPv6 范围(逗号分隔,例如 2001:db8::/32)否-
--clear移除整个配置的范围否-

list

列出配置的访问密钥

rdc config access list

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>

3.3 repair

对机器的健康检查发现执行安全修复,然后重新检查(退出码 0:没有遗留,1:遗留警告或需运维人员处理的项,2:遗留错误或有修复失败)

rdc machine repair <name> [options]
标志描述必填默认值
--dry-run列出将要执行的修复,但不执行否-
--code <code>只修复此发现代码(可重复)否-
--with-backup允许 auto-with-backup 修复,每项在其仓库快照成功后执行否-
--window-override在维护窗口之外也执行 window=only 修复否-
--set-window <window>保存机器的维护窗口(HH:MM-HH:MM,UTC),或用 off 清除,然后退出否-

3.4 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.5 deprovision

销毁云配置的机器并从配置中移除

rdc machine deprovision <name> [options]
标志描述必填默认值
--force跳过确认提示否-
--archive-repos归档放置在此机器上的仓库的配置条目(保留凭据,可恢复)否-
--debug启用调试输出(本地模式)否-

3.6 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.7 converge

逐个重启仍在使用旧运行时布局的仓库守护进程,让它们切换到当前布局。上传 renet 后 CLI 会自动执行;手动运行可用于预览计划、继续失败的处理,或配合 --policy always 在 renet 二进制文件变更后重启。

rdc machine converge <name> [options]
标志描述必填默认值
--dry-run只显示计划,不重启任何内容否-
--json以 JSON 格式输出收敛报告否-
--include-unknown同时重启本地配置中没有的过时仓库(其环境密钥未知)否-
--policy <policy>重启策略:epoch(仅布局变更时) 或 always(renet 二进制文件变更时也重启)否epoch
--continue-on-error某个仓库失败后继续执行,而不是停止整轮处理否-
--debug启用调试输出(本地模式)否-

3.8 add

将机器添加到当前配置

rdc machine add <name> [options]
标志描述必填默认值
--ip <address>机器 IP 地址或主机名是-
--user <username>SSH 用户名是-
--port <port>SSH 端口否22

3.9 infra

管理基础设施配置(代理、DNS、证书)

cert

管理缓存的 TLS 证书

clear:

移除证书缓存

rdc machine infra cert clear

pull:

从机器下载并缓存 TLS 证书

rdc machine infra cert pull <machine> [options]
标志描述必填默认值
--no-prune跳过清理过期的网络 ID 证书否-
--debug启用调试输出(本地模式)否-

push:

将缓存的 TLS 证书上传到机器

rdc machine infra cert push <machine> [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-

status:

显示缓存的证书清单

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.10 provider

管理用于自动配置机器的云服务提供商

add

添加云服务提供商

rdc machine provider add <name> [options]
标志描述必填默认值
--provider <source>已知提供商来源(例如 linode/linode, hetznercloud/hcloud)否-
--source <source>自定义 OpenTofu 提供商来源(例如 vultr/vultr)否-
--token-env <var>保存云服务商 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.11 remove

从当前配置中移除机器

rdc machine remove <name> [options]
标志描述必填默认值
-y, --yes跳过确认提示否-
--force即使仓库仍放置在该机器上,或备份策略仍绑定到该机器,也移除该机器,使这些引用处于悬空状态。否-
--archive-repos归档放置在此机器上的仓库的配置条目(保留凭据,可恢复)否-

3.12 restart-services

逐个重启仍在运行已被替换的二进制文件的 renet 守护进程,使其切换到已安装的版本;每个单元确认在新二进制文件上正常运行后,才会处理下一个。使用 --include-docker 时,还会逐个仓库重启各仓库的 rediacc-docker-N 监管进程,这会重启该仓库的容器。

rdc machine restart-services <name> [options]
标志描述必填默认值
--include-docker同时重启每个仓库的 rediacc-docker-N 监管进程(会重启该仓库的容器)否-
--repo <name>将重启限定在单个仓库的监管进程(需要 --include-docker)否-
--json以 JSON 格式输出报告否-

3.13 scan-keys

扫描当前配置中机器的 SSH 主机密钥

rdc machine scan-keys [name]

3.14 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%
--no-converge不重启仍使用旧运行时布局的仓库守护进程(等同于 REDIACC_SKIP_RUNTIME_CONVERGE=1)否-
--debug启用调试输出(本地模式)否-

3.15 status

显示完整机器状态(系统、仓库、容器、服务)。只读操作:绝不更新机器上的 renet;版本不一致时会发出警告。

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)退出否-

3.16 gpu

显示机器可交给仓库的 GPU、它提供的 CDI 设备,以及每个设备由哪个仓库持有。

list

列出机器上检测到的 GPU、其 spec 定义的 CDI 设备名称,以及每个设备授予了哪些仓库。要授予设备,请使用 'rdc repo gpu grant'。

rdc machine gpu list <name> [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-

3.17 access

将配置的访问密钥绑定到机器,并写入其 authorized_keys,每个密钥都限制在各自的来源范围内

set

将访问密钥绑定到机器。此处指定的范围只在这台机器上替代密钥自身的范围。用 'machine access push' 应用

rdc machine access set <machine> [options]
标志描述必填默认值
--key <key>访问密钥名称(参见 'config access list')是-
--ipv4 <cidrs>CIDR 格式的 IPv4 范围(逗号分隔,例如 203.0.113.0/24)否-
--ipv6 <cidrs>CIDR 格式的 IPv6 范围(逗号分隔,例如 2001:db8::/32)否-
--clear-ranges丢弃这台机器自己的范围,改用密钥或配置的范围否-

remove

解除访问密钥与机器的绑定。下一次 'machine access push' 会删除它的行

rdc machine access remove <machine> [options]
标志描述必填默认值
--key <key>访问密钥名称(参见 'config access list')是-

show

显示绑定到机器的访问密钥,以及每个密钥在该机器上生效的范围

rdc machine access show <machine>

push

将绑定到机器的访问密钥写入其 authorized_keys,沿用已有的同密钥行,并删除此配置为已解除绑定的密钥写入的行。会拒绝导致 rdc 自身会话被锁在门外的更改;如果推送期间文件发生变化,则不写入任何内容

rdc machine access push <machine> [options]
标志描述必填默认值
--dry-run显示更改但不写入否-

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

列出所有集群,或指定集群名称以显示该集群的完整配置。

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 health

运行仓库 Rediaccfile 中的 health() 检查,并以 0(正常)、1(警告)或 2(错误)退出

rdc repo health <ref> [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.5 repair

运行仓库 Rediaccfile 中其声明类别允许的 repair() 函数,然后再次运行 health()(退出码 0:ok,1:警告,2:错误或修复失败)

rdc repo repair <ref> [options]
标志描述必填默认值
--dry-run显示将会运行哪些 repair(),但不运行否-
--with-backup在仓库快照成功后允许 auto-with-backup 的 repair() 函数否-
--window-override在机器维护窗口之外也运行 window=only 的 repair() 函数否-
-y, --yes不经询问运行未声明类别(operator-only)的 repair() 函数否-
--debug启用调试输出(本地模式)否-

6.6 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.7 diff

在两个写时复制(CoW)分支仓库之间进行 git 风格的文件级差异比较。报告新增、修改、删除和重命名的文件。将由位置参数 <ref> 指定的仓库(目标/新侧)与从本地配置解析出的父级,或与显式的 --base 仓库(基准/旧侧)进行比较。仅使用元数据,与大小无关:在不解密的情况下以块级别对加密的 LUKS 镜像求差,因此 1 GB 与 100 GB 仓库在相同的毫秒内完成差分。

rdc repo diff <ref> [options]
标志描述必填默认值
--base <ref>用于比较的仓库(基准/旧侧);默认为 <ref> 的父级否-
--name-only仅打印更改的文件路径,每行一个(不含状态字母)否-
--stat显示每个文件的变更量(字节和块增量)及总计否-
--content [path]为单个文件显示统一文本差异(需提供文件路径)否-
--fast信任块过滤器;跳过内容哈希确认(可能过报 "已修改")否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.8 list

列出机器上的仓库

rdc repo list [options]
标志描述必填默认值
-m, --machine <name>目标机器名称否-
--datastore <name>列出此数据存储中的仓库(解析为当前持有该数据存储的机器)否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.9 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.10 delete

删除仓库及其数据。fork 的配置条目会移至 deletedRepositories,释放名称,并保留 GUID 以便通过 'repo admin archive restore' 恢复;grand 仓库或已推送到其他机器的仓库的条目会保留,除非传入 --archive-config。接受位置参数 <ref>;不带标签的名称会解析为 grand 主线,若多个仓库共用同一基础名称则会被拒绝,此时请传入 name:tag 以指定某个 fork。

rdc repo delete <ref> [options]
标志描述必填默认值
--archive-config将配置条目移至 deletedRepositories 以便后续恢复否-
--purge-backups同时立即删除该仓库的云备份,而不是等它们过期否-
-y, --yes跳过确认提示否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-
--dry-run显示将执行的操作但不进行实际更改否-

6.11 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.12 branch

创建一个指向工作 fork 当前 commit(其顶端)的命名 branch 引用。Branch 引用保存在 CLI 配置中(machine = 对象存储,config = 引用存储)。

rdc repo branch <ref> [options]
标志描述必填默认值
--branch <branch>新分支的名称是-

6.13 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.14 log

打印从工作 fork 的当前 commit(或某个 commit 引用)可达的提交历史,沿 'rdc repo commit' 记录的父 commit 链进行遍历。读取的是卷外镜像,因此不会解锁任何 commit。

rdc repo log <ref> [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-

6.15 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 <ourstheirs>`三方合并的逐文件冲突解决方式:'ours' 保留目标的版本,'theirs' 采用源的版本。省略则对整个镜像执行快进(采用 theirs)。否
--base <guid>三方合并的共同祖先 commit GUID(与 --resolve 配合使用)。默认为源 commit 的父级或目标的当前 commit。否-
--debug启用调试输出(本地模式)否-

6.16 gc

删除机器上没有任何分支或 HEAD 可达的不可变提交对象(可达性垃圾回收)。机器是对象存储,CLI 配置是引用存储。默认仅试运行:传入 --apply 才会删除。绝不触及已挂载的对象或正在使用的分叉。

rdc repo gc [options]
标志描述必填默认值
-m, --machine <name>目标机器名称是-
--apply实际删除不可达的提交(默认仅为试运行预览)否-
--debug启用调试输出(本地模式)否-

6.17 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>分支的标签(创建 名称:标签)是-
--checkpointfork 前在源上创建 CRIU checkpoint(捕获进程内存状态以便在 fork 上恢复)否-
--immutable将分叉标记为只读:它会拒绝挂载,使其镜像永久保持字节级稳定(用于跨机器增量推送的冻结提交/基线)否-
--upfork后挂载并启动服务(fork + mount + up 一条命令完成)否-
--no-wait与 --up 搭配:容器启动后立即返回;健康检查在后台继续(适合一次性分叉)否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.18 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.19 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.20 resize

离线调整仓库大小(支持扩展和缩减)

rdc repo resize <ref> [options]
标志描述必填默认值
--size <size>新的仓库大小(例如 10G、100G、1T)是-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.21 expand

在线扩展已挂载的仓库(零停机)

rdc repo expand <ref> [options]
标志描述必填默认值
--size <size>新的仓库大小(例如 10G、100G、1T)是-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.22 trim

从已挂载的仓库回收数据存储池空间(在线,零停机)。通过 fstrim 将仓库内已删除的块归还给存储池。不带引用时,会修剪 -m 上所有已挂载的仓库以及数据存储本身。正在备份的仓库会跳过 fstrim,但 --docker 回收仍会执行

rdc repo trim [ref] [options]
标志描述必填默认值
--docker回收 Docker 空间(已停止的容器、悬空镜像、构建缓存);即使在备份快照处于活动状态时也会执行否-
--docker-volumes同时清理未使用的 Docker 卷否-
--report-only仅显示 discard 状态和可回收空间估算,不执行修剪否-
-m, --machine <name>目标机器名称否-
--debug启用调试输出(本地模式)否-

6.23 prune

对仓库的 Docker 存储进行分类并回收:未使用的镜像、构建缓存、已停止的容器,以及没有任何镜像或容器引用的 overlay2 目录。不带 --apply 时仅为试运行。--apply 在仓库保持在线的情况下通过 Docker API 回收;--apply --offline 还会在运行期间停止仓库的 Docker 守护进程,并将孤立目录隔离。省略引用时,将检查 -m 指定机器上所有已挂载的仓库(仅限试运行)

rdc repo prune [ref] [options]
标志描述必填默认值
--apply执行回收;不加此选项则只报告否-
--offline停止仓库的 Docker 守护进程并隔离孤立目录(需要 --apply)否-
--all-images同时移除没有容器使用的带标签镜像否-
--no-trim回收后跳过 fstrim否-
-y, --yes跳过确认提示否-
-m, --machine <name>目标机器名称否-
--debug启用调试输出(本地模式)否-

6.24 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)否-
--memory-max <size>仓库的内存上限(例如 10G,设为 max 则移除);达到上限时只会因 OOM 终止其中一个容器,不影响仓库之外的任何进程否-
--memory-high <size>仓库的内存节流点(例如 8G,设为 max 则移除)否-
--cpu-max <cores>仓库的 CPU 上限,以核数(4、2.5)或 N% 表示,设为 max 则移除否-
--io-max <limits>仓库设备的 I/O 上限:rbps=、wbps=、riops=、wiops= 任意组合(例如 rbps=200M,wbps=100M;KEY=max 移除单项),或 max否-
--pids-max <count>仓库的进程数上限(pids.max),设为 max 则移除否-
--ram-volume <size>仓库在 <mount>/.ram 的 RAM 卷大小(例如 8G,设为 max 则移除);内存上限必须比它高出 1G否-
--clear-limits移除仓库的所有限制和 RAM 卷否-
--force允许内存上限低于仓库当前的内存用量否-
-m, --machine <name>目标机器名称否-
--debug启用调试输出(本地模式)否-

get

显示已保存的机器默认值、仓库覆盖值(带引用时)以及维护器实际执行的合并后有效策略

rdc repo policy get [ref] [options]
标志描述必填默认值
-m, --machine <name>目标机器名称否-
--debug启用调试输出(本地模式)否-

6.25 push

将仓库推送到另一台机器。存储目标已停用;如需按时间点备份,请使用 `rdc backup snapshot`。机器间传输时,加密的仓库镜像会以相同的 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强制覆盖现有备份否-
--bwlimit <limit>传输速率上限:可用每秒字节数、十进制单位(12.5M = 12.5 MB/s)、二进制单位(12Mi)或比特(100Mbps)。不设置则不限速否-
--delta-base <guid>在两台机器上字节完全相同的不可变基准 GUID;仅传输已更改的块(机器目标)。省略以自动选择基准否-
--strategy <strategy>使用增量基准时的块增量策略:auto、physical 或 shared否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.26 pull

从另一台机器拉取仓库。存储源已停用;如需按时间点恢复,请使用 `rdc backup restore`。源类型从配置中自动检测。使用 --up 在 pull 后部署

rdc repo pull <ref> [options]
标志描述必填默认值
--from <remote>源机器名称(从配置中自动检测)否-
--from-machine <machine>—否-
--force强制覆盖现有仓库否-
--uppull后,在此机器上挂载并部署仓库否-
--bwlimit <limit>传输速率上限:可用每秒字节数、十进制单位(12.5M = 12.5 MB/s)、二进制单位(12Mi)或比特(100Mbps)。不设置则不限速否-
--delta-base <guid>在两台机器上字节完全相同的不可变基准 GUID;仅接收已更改的块(机器源)否-
--strategy <strategy>使用增量基准时的块增量策略:auto、physical 或 shared否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.27 migrate

以最短停机时间将仓库从一台机器实时迁移到另一台机器。两阶段 rsync:在运行期间进行批量传输,然后短暂停止以进行增量同步。迁移整个仓库(路由会重新指向新位置),迁移成功后会删除源镜像(使用 --keep-source 可保留它们)。支持用于进程内存状态迁移的 CRIU 检查点,以及目标机器的自动置备

rdc repo migrate <ref> [options]
标志描述必填默认值
--to <place>目标机器或集群是-
--provision <provider>通过云服务商自动配置目标机器(例如 hetzner、linode)否-
--bwlimit <limit>传输速率上限:可用每秒字节数、十进制单位(12.5M = 12.5 MB/s)、二进制单位(12Mi)或比特(100Mbps)。不设置则不限速否-
--checkpointCRIU 实时迁移:捕获和恢复进程内存状态否-
--delta-base <guid>用于切换增量的不可变基准 GUID(高级;默认使用阶段 1 的基准)否-
--strategy <strategy>切换时的块增量策略:auto、physical 或 shared否-
--skip-dns迁移后跳过 DNS 记录切换否-
--keep-source成功迁移后保留源镜像(默认会被删除;残留副本无法通过任何配置记录寻址,reconcile 会将其标记为孤立项)否-
--debug启用调试输出(本地模式)否-

6.28 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.29 tunnel

创建到远程机器上容器端口的 SSH 端口转发隧道。当无歧义时自动检测容器和端口。隧道保持打开直到按下 Ctrl+C

rdc repo tunnel <ref> [options]
标志描述必填默认值
-c, --container <name>容器名称(仅一个运行时自动检测)否-
--port <port>要转发的远程容器端口否-
--local <port>本地端口(默认与远程端口相同)否-
--url-only隧道就绪后只输出本地 URL(机器可读)否-

6.30 secret

管理部署时注入的每仓库密钥。仅写入:get 仅返回摘要(永不返回明文),set/unset 需要 --current 摘要匹配或 --rotate-secret。两种传递模式:env(REDIACC_SECRET_<KEY>)和 file(通过 compose `secrets:` 挂载的 tmpfs,路径为 /var/run/rediacc/net-<networkId>/secrets/<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.31 admin

仓库管理与维护相关操作。

archive

已归档仓库记录的簿记管理。

list:

列出已归档的仓库凭据

rdc repo admin archive list

purge:

永久删除所有已归档的凭据

rdc repo admin archive purge [name] [options]
标志描述必填默认值
-y, --yes跳过确认提示否-

restore:

恢复已归档的仓库凭据

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>目标机器名称是-
--debug启用调试输出(本地模式)否-

ownership

更改仓库目录所有权

rdc repo admin ownership <ref> [options]
标志描述必填默认值
--uid <uid>所有者 UID(默认: 7111)否-
--root-owned将位于 root 或该 UID 所有目录下的 root 所有文件交给所有者 UID,并把每一项记录到撤销清单中否-
--dry-run与 --root-owned 一起使用:列出将会变更的文件,不做任何更改否-
--undo与 --root-owned 一起使用:把撤销清单中仍归所有者 UID 所有的文件交还给 root否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

autostart

管理开机时仓库的自动启动

enable:

为仓库启用自动启动

rdc repo admin autostart enable [ref] [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

disable:

为仓库禁用自动启动

rdc repo admin autostart disable [ref] [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

list:

列出已启用自动启动的仓库

rdc repo admin autostart list [options]
标志描述必填默认值
-m, --machine <name>目标机器名称是-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

template

将模板应用到仓库

list:

列出 CLI 内置的所有部署模板

rdc repo admin template list

apply:

将模板应用到仓库。使用内置模板名称(例如 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.32 promote

用分支的数据替换主仓库的数据。主仓库保留其身份(GUID、networkId、域名、自动启动、备份链),但获取分支的升级数据。旧的生产数据作为备份分支保留。用途:在分支上测试升级 → 验证 → 接管到生产环境。

rdc repo promote <fork-ref> [options]
标志描述必填默认值
-y, --yes跳过确认提示否-
--debug启用调试输出(本地模式)否-
--skip-router-restart二进制更新后跳过重启路由服务器否-

6.33 logs

显示仓库容器的应用日志。docker 仓库从其自身的 Docker 守护进程读取;kubernetes 仓库读取其命名空间中的 pod 日志。若仓库运行多个容器,请使用 --container 指定所需容器。

rdc repo logs <ref> [options]
标志描述必填默认值
-c, --container <name>要读取的容器(仅当仓库运行多个容器时才需要)否-
-f, --follow持续流式输出新日志行,直到被中断否-
--lines <n>显示多少行历史日志(默认:100)否100
--timestamps在每行前加上时间戳否-
--debug启用调试输出(本地模式)否-

6.34 exec

在仓库容器内运行命令。命令自身的退出码会原样透传,因此可用于脚本和条件判断。docker 仓库通过其 Docker 守护进程运行命令;kubernetes 仓库在其命名空间中运行命令。

rdc repo exec <ref> <cmd...> [options]
标志描述必填默认值
-c, --container <name>要在其中运行的容器(仅当仓库运行多个容器时才需要)否-
-i, --interactive分配终端(用于需要终端的命令)否-
-u, --user <user>以哪个用户身份运行命令否-
--debug启用调试输出(本地模式)否-

6.35 gpu

为仓库授予 CDI 设备(例如 nvidia.com/gpu=all),使其容器可以申请该设备,也可以再将其撤销。授权由机器强制执行;独占授权会把设备保留给单个仓库。

grant

允许仓库的容器申请某个 CDI 设备。设备名称可从 'rdc machine gpu list' 获得。

rdc repo gpu grant <ref> [options]
标志描述必填默认值
--device <cdi-name>完整的 CDI 设备名称(例如 nvidia.com/gpu=all)是-
--exclusive将设备保留给此仓库:在此期间不能再授予其他仓库否-
--debug启用调试输出(本地模式)否-

revoke

从仓库的容器收回 CDI 设备。已持有该设备的容器会继续使用,直到重启。

rdc repo gpu revoke <ref> [options]
标志描述必填默认值
--device <cdi-name>完整的 CDI 设备名称(例如 nvidia.com/gpu=all)是-
--debug启用调试输出(本地模式)否-

6.36 permission

扩大仓库 Rediaccfile 中 up() 和 down() 可访问的范围。它们以无特权的通用用户身份运行;授权会增加一个路径(--path),或不降权的 root(--root)。授权由机器强制执行,Rediaccfile 只能通过 '# rediacc:needs' 行申请,fork 启动时没有任何授权。

grant

允许仓库 Rediaccfile 中的 up() 和 down() 访问某个路径,或以 root 身份运行。除非用户在启动代理之前设置了 REDIACC_ALLOW_GRAND_REPO,否则代理的 --root 会被拒绝。

rdc repo permission grant <ref> [options]
标志描述必填默认值
--root以 root 身份运行 up() 和 down(),不降权否-
--path <path>up() 和 down() 可访问的绝对路径,格式为 PATH[:ro|:rw](默认只读)否-
--debug启用调试输出(本地模式)否-

revoke

撤销仓库的生命周期路径授权或 root 授权。之后的 up() 和 down() 将按剩余的授权运行。

rdc repo permission revoke <ref> [options]
标志描述必填默认值
--root撤销 root 授权否-
--path <path>要撤销的绝对路径否-
--debug启用调试输出(本地模式)否-

show

显示仓库的 up() 和 down() 是否以 root 身份运行,以及可访问哪些路径。

rdc repo permission show <ref> [options]
标志描述必填默认值
--debug启用调试输出(本地模式)否-

7. 分离任务

管理机器上的分离任务:列出任务、查看状态、回放或跟踪任务的事件日志、取消任务,或清理已完成的任务。分离任务在机器上通过 systemd 运行,因此不会因连接断开而中断,之后可以重新连接查看。

7.1 list

列出机器上的分离任务,按最新排列在前

rdc job list [options]
标志描述必填默认值
-m, --machine <name>目标机器名称(省略则列出此配置中待处理的任务凭据)否-
--all同时显示已过期和已忽略的票据否-

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跳过确认提示否-

7.6 wait

根据凭据继续跟踪任务,随后确认并以该任务的退出码退出

rdc job wait <job-id> [options]
标志描述必填默认值
-m, --machine <name>目标机器名称(此配置持有该任务的凭据时可省略)否-
--timeout <duration>超过此时长后不再等待(30s、5m、2h;纯数字表示秒)。任务会继续运行。否-

7.7 dismiss

在本地放弃作业票据:待执行的步骤将被丢弃,票据不再显示。不会连接机器,也不会改动作业本身。

rdc job dismiss [job-id...] [options]
标志描述必填默认值
--stale忽略所有早于 --older-than 的待处理票据(默认 24h)否-
--older-than <duration>与 --stale 一起使用时票据的最短存在时间,例如 90m、24h(默认:24h)否-
-y, --yes跳过确认提示否-

8. 备份与恢复

管理备份策略、其计划运行以及产生的产物:为仓库声明策略,按需运行或恢复,并查看写入存储端点的归档。

8.1 browse

列出仓库包含的文件。默认在本地以只读方式遍历仓库镜像,不需要账户服务器,也不需要网络。加密仓库必须先挂载,或先部署其密钥文件才能打开;browse 会给出提示,而不是返回空列表。指定 --at <时间|快照> 时,改为列出块存储快照所保存的文件列表,无需恢复。

rdc backup browse <repo-ref> [options]
标志描述必填默认值
--path <subdir>将列表限制在此子目录内否-
--depth <n>将遍历深度限制为 N 层(0 表示不限)否-
--limit <n>返回的最大条目数(0 表示不限)否-
`—at <timesnapshot>`列出在此时间或之前创建的快照,或指定快照 ID(读取块存储)否
--from <storeId>配合 --at 使用,从此备份存储而非排名最高的存储读取快照否-
--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>机器名称否-
--path <subdir>将列表限定为单个子目录;省略则列出整个数据存储否-
--debug启用调试输出(本地模式)否-

8.4 manifests

列出服务器上记录的备份快照清单

rdc backup manifests [repo-ref] [options]
标志描述必填默认值
--limit <n>每页行数(默认且最大 500)否-
--before <cursor>来自上一次列表的分页游标(nextBefore)否-
--include-deleted包含延迟删除待生效的快照否-

8.5 restore

将备份产物转换为可运行的仓库。放置位置在此指定。

rdc backup restore <artifact-ref> [options]
标志描述必填默认值
--as <name>恢复后仓库的名称(默认使用产物名称)否-
-m, --machine <name>机器名称否-
--datastore <name>恢复到此命名数据存储中(由其挂接的机器承载)否-
--at <time>恢复到某个时间点:快照 ID 或 RFC3339 时间(分块存储恢复)否-
--from <storeId>从此备份存储读取快照(默认:持有最新已验证快照的存储;存储出错时改用下一个)否-
--any-stream与 --at 一起使用时,也会考虑其他机器和该谱系的分叉写入的快照(默认:仅限源机器上的此仓库)否-
--no-seed从存储中获取每个数据块,而不是复用本地锚点或仓库镜像(可证明存储可读)否-
--allow-unopenable即使仓库口令无法打开镜像也照常放置(口令更改之前的快照)否-
--salvage跳过丢失或损坏的数据块继续,其单元保留为空洞(需要 --as)否-
--path <file-or-dir>只从快照中恢复这个文件或目录,不恢复整个仓库(需要 --at)否-
--to <dir>存放已恢复路径的目录(默认为该快照在机器上的恢复文件夹)否-
--up传输完成后部署恢复的仓库否-
--health-window <seconds>健康门禁检查的总时间窗口(秒,默认 300)否-
--health-timeout <seconds>单次健康检查的超时时间(秒,默认 30)否-
-y, --yes跳过确认提示否-
--debug启用调试输出(本地模式)否-

8.6 retention

显示服务器正在执行的快照保留策略。

clear

移除已声明的策略,改回套餐或服务器的默认设置。

rdc backup retention clear <repo-ref> [options]
标志描述必填默认值
--stream <id>仅应用于此备份流(流 ID);省略时使用整个仓库的默认值否-

set

指定要保留的快照数量。每个选项都会被整体替换,而不是合并。

rdc backup retention set <repo-ref> [options]
标志描述必填默认值
--keep-last <n>保留这么多个最新的快照否-
--keep-hourly <n>为这么多小时中的每一小时保留最新的快照否-
--keep-daily <n>为这么多天中的每一天保留最新的快照否-
--keep-weekly <n>为这么多周中的每一周保留最新的快照否-
--keep-monthly <n>为这么多个月中的每一个月保留最新的快照否-
--keep-yearly <n>为这么多年中的每一年保留最新的快照否-
--keep-within <duration>保留距最新快照在此时长内的所有快照,例如 24h否-
--stream <id>仅应用于此备份流(流 ID);省略时使用整个仓库的默认值否-

preview

显示下一次清理将删除哪些快照,以及可释放的空间。

rdc backup retention preview <repo-ref>

8.7 run

在远程机器上立即触发备份

rdc backup run [strategy] [options]
标志描述必填默认值
-m, --machine <name>机器名称是-
--debug启用调试输出(本地模式)否-

8.8 schedule

将备份计划部署到远程机器(systemd 定时器)

rdc backup schedule [options]
标志描述必填默认值
-m, --machine <name>机器名称是-
--dry-run预览生成的单元而不部署否-
--force即使当前有备份正在运行也继续执行(新单元在下次定时器触发时生效;正在运行的调用保留其旧单元)否-
--reset-failed部署成功后清除已修改服务的 failed 状态(默认关闭,保留故障信号)否-
--debug启用调试输出(本地模式)否-

8.9 snapshot

上传分块存储快照:首次为完整清单,之后仅为变更单元

rdc backup snapshot <repo-ref> [options]
标志描述必填默认值
--reseed不信任本地锚点,重新上传完整清单(会重新上传所有内容并重新计入配额)否-
--dry-run仅规划:不上传。报告将会移动哪些内容否-
--cold先停止容器并冻结,重启之后再上传。用一次短暂的真实停机换来应用一致的快照;不能与 --dry-run 同时使用否-
--accept-identity-change当镜像的 LUKS 标识变化或镜像缩小时,将其作为新基线;上传完整快照否-
--bwlimit <rate>上传速率上限:可用每秒字节数、十进制单位(12.5M = 12.5 MB/s)、二进制单位(12Mi)或比特(100Mbps)。不设置则不限速否-
--parallelism <n>同时上传的分块数量(默认 4)否-
--read-bwlimit <rate>哈希计算和单元读取的速率上限:单位与 --bwlimit 相同;默认 50M,0 表示不限速否-
--hash-parallelism <n>同时计算哈希的单元数量(默认 1;0 表示每个 CPU 一个,最多 16 个)否-
--cpu-limit <percent>此快照的 CPU 上限:占全部核心的百分比,1-100(默认 50;100 = 不设上限)否-
--debug启用调试输出(本地模式)否-

8.10 status

显示远程机器上的备份状态和定时器状态

rdc backup status [strategy] [options]
标志描述必填默认值
-m, --machine <name>机器名称是-
--debug启用调试输出(本地模式)否-

8.11 strategy

管理命名备份策略(热/冷模式、目标、调度)

set

创建或更新备份策略

rdc backup strategy set <strategy> [options]
标志描述必填默认值
--destination <name>策略内的目标名称。会创建一个 Rediacc 分块存储目标否-
--target <storeId>目标写入的已注册存储库 ID(默认值:home)。与 --destination 配合使用否-
--replicate-from <storeId>将目标设为副本:账户服务器会把此存储库复制到该目标的目标存储库,因此机器不会向其上传任何内容。与 --destination 和 --target 配合使用否-
--cron <expression>Cron 调度(例如 "0 * * * *" 表示每小时)否-
--mode <mode>备份模式:"hot" 在一切正常运行时创建快照,"cold" 会在创建快照的瞬间停止容器否-
--bwlimit <limit>上传带宽限制,单位为字节/秒,可加 K/M/G 后缀(例如 "6M"、"500K")否-
--read-bwlimit <limit>此策略快照的读取速率上限:单位与 --bwlimit 相同;none 表示清除否-
--cpu-limit <percent>此策略快照的 CPU 上限:占全部核心的百分比,1-100(默认 50);none 表示清除否-
--include <repos>仅备份这些仓库(逗号分隔的名称)否-
--exclude <repos>从备份中排除这些仓库(逗号分隔的名称)否-
--retention <spec>快照保留设置,例如 last=7,daily=7,weekly=4,monthly=6(“none”表示移除)否-
--rpo <duration>声明的保护目标,例如 15m(至少 5m;none 表示清除)否-
--repo-rpo <ref=duration>按仓库设置目标,格式 <ref>=<时长>,可重复(none 表示移除);name:* 表示整个系列否-
--repo-cell-size <ref=size>按仓库设置单元大小,格式 <ref>=<大小>,可重复。更改会重新播种该仓库否-
--no-estimate跳过变化量与成本估算否-
--dry-run显示将发生的更改,不写入任何内容否-
--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>仅删除此目标(保留其他目标)否-
--unbind同时从所有绑定该策略的机器上移除该策略否-

list

列出所有备份策略

rdc backup strategy list

show

显示备份策略详情

rdc backup strategy show [strategy]

8.12 reconcile

将仓库的已存储字节台账重置为存储中的实际内容(绝不删除任何数据块)

rdc backup reconcile [repo-ref] [options]
标志描述必填默认值
--dry-run只显示数据,不修改台账否-
--check试运行;台账与存储不一致时以退出码 1 结束否-

8.13 usage

显示备份存储配额、已存储字节数和各仓库的使用情况

rdc backup usage

8.14 verify

对照分块存储验证仓库的备份锚点

rdc backup verify <repo-ref> [options]
标志描述必填默认值
--deep对每个已记录的单元重新计算哈希(完整验证),而不是抽样检查否-
--store让服务器对此仓库已存储的每个块重新计算哈希,并指出缺失或损坏的块否-
--restore-test以一次性名称直接从存储中恢复锚点快照,与锚点比较,记录结果并删除副本否-
--debug启用调试输出(本地模式)否-

8.15 snapshots

管理已存储的快照

delete

删除一个已存储的快照。其独占的数据会在下一次垃圾回收时释放。

rdc backup snapshots delete <repo-ref> <snapshot-id>

8.16 download

将仓库镜像从机器复制到本地目录或外接驱动器。每次运行都会创建一个仅在会话期间保留的新快照,用 rsync 增量就地更新本地副本,中断后可续传,并通过 sha256 校验结果。

rdc backup download [refs...] [options]
标志描述必填默认值
--to <dir>接收 <machine>/<name>.<tag>.img 的现有可写目录(不会自动创建)是-
--all复制 -m 所指机器上的所有 grand 仓库否-
-m, --machine <name>机器名称否-
--include-forks与 --all 搭配使用时,同时复制 fork否-
--bwlimit <rate>网络带宽上限,例如 100Mbps 或 12.5M(默认:不限速)否-
--checkpoint在快照前对仓库做检查点并冻结(热备份)否-
--retries <n>网络故障后本次运行内的重试次数(默认:3)否-
--skip-verify跳过 rsync 之后的 sha256 比对;rsync 自带的校验和仍会执行否-
--skip-space-check目标空间可能不足时只给出警告,不拒绝执行否-
--store无需机器,直接从备份存储重建加密镜像。需要在 REDIACC_TOKEN 中提供带 backup:read + backup:restore 范围的 API 令牌否-
`—at <timesnapshot>`配合 --store 使用,指定要获取的快照:时间 (ISO 8601) 或快照 ID (默认:最新)否
--from <storeId>配合 --store 使用,从此备份存储而非排名最高的存储读取;不会回退到其他存储否-

8.17 upload

将 'rdc backup download' 生成的本地仓库镜像发送到机器,并注册为新仓库。传输中断后可续传,机器会在放置镜像之前校验 sha256 和 LUKS 头。

rdc backup upload <image-file> [options]
标志描述必填默认值
--to <machine>接收镜像的机器是-
--as <name>新仓库的名称(默认:镜像中的仓库名称)否-
--datastore <name>将镜像放到这个命名数据存储上,而不是机器的默认数据存储否-
--from-repo <name>状态文件丢失或指向未知仓库时,提供凭据和谱系的配置仓库否-
--bwlimit <rate>网络带宽上限,例如 100Mbps 或 12.5M(默认:不限速)否-
--retries <n>网络故障后本次运行内的重试次数(默认:3)否-
--up注册完成后启动该仓库否-
--skip-verify跳过本地镜像与下载时记录的 sha256 的比对否-
--debug启用调试输出(本地模式)否-

8.18 purge

一次性从分块存储中删除仓库所有已存储的备份快照,仓库本身保留。

rdc backup purge <repo-ref> [options]
标志描述必填默认值
--dry-run显示将执行的操作但不进行实际更改否-
-y, --yes跳过确认提示否-
--cancel在生效前取消延迟的整体清除否-

8.19 check

通过恢复一个文件,证明已存储的快照可以用口令打开

rdc backup check <repo-ref> [options]
标志描述必填默认值
--path <file>要恢复并比较的文件(默认:最小的非空文件)否-
--debug启用调试输出(本地模式)否-

8.20 repair

从本机的锚点重新上传存储丢失或有误的数据块

rdc backup repair <repo-ref> [options]
标志描述必填默认值
--dry-run报告将被删除并重新上传的内容;不做任何更改否-
--debug启用调试输出(本地模式)否-

8.21 toc-key

管理仓库的浏览列表密钥

sync

在仓库所在机器上安装其列表密钥,或替换不同的密钥

rdc backup toc-key sync <repo-ref> [options]
标志描述必填默认值
--replace替换机器上已有的不同密钥(会发送口令作为证明)否-
--dry-run报告将要执行的操作;不触碰任何内容否-

8.22 churn

测量仓库镜像在两次运行之间变化了多少,按单元大小预测上传量并给出推荐。运行期间机器上会保留一个 reflink 基线,结束时一定会删除。

rdc backup churn <repo-ref> [options]
标志描述必填默认值
--samples <n>要采集的测量样本数(默认 3)否-
--interval <duration>探测之间的等待时间,例如 10m(默认 10m)否-
--debug启用调试输出(本地模式)否-

8.23 immutability

显示或设置已存储备份的延迟删除窗口

show

显示当前生效的延迟删除窗口

rdc backup immutability show

set

以天为单位设置延迟删除窗口(0 到 30)

rdc backup immutability set <days>

8.24 undelete

在生效前取消快照的延迟删除

rdc backup undelete <snapshot-id>

9. VS Code 集成

打开 VS Code Remote SSH 连接到机器或仓库

9.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>机器上预先暂存的服务器压缩包路径(离线安装)否-

9.2 list

列出已配置的 VS Code SSH 连接

rdc vscode list

9.3 cleanup

移除 VS Code SSH 配置

rdc vscode cleanup [options]
标志描述必填默认值
--all移除所有 rediacc SSH 配置否-
-c, --connection <name>移除特定连接否-

9.4 check

检查 VS Code 安装和配置

rdc vscode check [options]
标志描述必填默认值
--insiders使用 VS Code Insiders 设置否-

9.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)否-

10. SSH 终端访问

打开到机器或仓库的 SSH 终端。目标可以是机器名称或仓库引用,仓库上下文(DOCKER_HOST、工作目录、环境变量)会自动设置。使用 `-c` 可非交互式运行单条命令。若需查看容器日志或在容器中执行一次性命令,请使用 `repo logs` 和 `repo exec`。如需 VS Code,请使用 `vscode`。

10.1 connect

在机器上打开 shell,或在已配置好 Docker 的仓库内部打开 shell。

rdc term connect <target> [options]
标志描述必填默认值
-c, --command <cmd>执行命令而不是交互式 shell否-
--external强制在外部终端窗口中启动否-
--reset-home重置每个仓库的主目录覆盖层以全新开始否-

11. 快捷命令(快捷方式)

11.1 run

警告:这是仅供调试和实验的底层命令,不适用于生产环境。日常操作请使用更高层的命令(repo up、repo down 等)。在机器上直接运行 renet 函数。

rdc run

11.2 trace

跟踪任务 (queue trace 的快捷方式)

rdc trace

11.3 cancel

取消任务 (queue cancel 的快捷方式)

rdc cancel

11.4 retry

重试失败的任务 (queue retry 的快捷方式)

rdc retry

12. 订阅管理

管理许可证和订阅令牌。使用 login 登录,使用 status 查看,使用 refresh 重新签发许可证。

12.1 login

使用Web门户的API令牌进行认证

rdc subscription login [options]
标志描述必填默认值
-t, --token <token>API令牌 (rdt_...)。传递 `-` 以从 stdin 读取(令牌不会出现在进程列表中)。否-
--password-stdin使用从 stdin 读取的账户密码免浏览器登录(需要 REDIACC_LOGIN_EMAIL)否-
--server <url>账户服务器URL否-

12.2 logout

清除已存储的订阅令牌

rdc subscription logout

12.3 proxy-token

基于本设备的登录签发一个短期有效的 proxy:exec 令牌,供 --proxy 使用

rdc subscription proxy-token [options]
标志描述必填默认值
--json以 JSON 输出令牌及其 expiresAt否-

12.4 status

显示订阅状态以及某台机器的许可证状态。

rdc subscription status [options]
标志描述必填默认值
-m, --machine <name>机器名称否-

12.5 refresh

从账户服务器刷新许可证。

rdc subscription refresh [options]
标志描述必填默认值
-m, --machine <name>机器名称否-
--repo <ref>仓库引用:name,或 name:tag,可选带 @machine(例如 shop 或 shop:test)否-

13. CLI 更新

检查并应用CLI更新

rdc update [options]
标志描述必填默认值
--force即使已是最新也强制更新否-
--check-only仅检查更新,不下载否-
--rollback回滚到上一个版本否-
--status显示自动更新状态和诊断信息否-
--channel <channel>设置发布渠道 (stable 或 edge)否-

14. 第三方致谢

打印随 rdc 一起分发的第三方组件:renet 内嵌并传递的二进制文件(CRIU、rsync)、内嵌的 Node.js 运行时,以及打包的 npm 依赖项。显示版本号、SPDX 许可证标识符,以及 GPL 合规所需的精确版本源码归档 URL。使用 --licenses 打印随发行版打包的完整 THIRD_PARTY_LICENSES 文本。

rdc credits [options]
标志描述必填默认值
--licenses打印随发行版打包的完整 THIRD_PARTY_LICENSES 文本否-

15. 系统诊断

诊断CLI环境和renet集成

rdc doctor

16. 本地工具

管理 rdc 在本机运行的本地工具。`rdc tools install tofu` 会下载固定版本的 OpenTofu,在解压前将其 SHA-256 与 rdc 内置的校验和比对,然后把二进制文件放入 rdc 的工具目录。`rdc tools list` 显示每个工具的版本及其来源。

16.1 install

下载此 CLI 中固定的 OpenTofu 版本,验证其 SHA-256 校验和后安装到 rdc 的工具目录。校验和不匹配时会删除下载的文件,不安装任何内容。rdc 从不安装 Terraform;PATH 中已有的会原样使用。

rdc tools install <tool> [options]
标志描述必填默认值
--force即使固定版本已存在也重新安装否-

16.2 list

列出 rdc 将要运行的预配引擎(OpenTofu 或 Terraform),以及 rdc 工具目录中的每个 OpenTofu 版本,并附上版本、来源和路径。

rdc tools list

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` 指定机器或设置上下文默认值
需要区域名称。使用 --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 管道和自动化工作流中变得容易。