跳到正文

备份 ​

内置备份代理的状态、计划、运行、恢复点、验证和保留。

本组中的操作及其访问规则、重试规则、参数和响应。每个请求都需携带密钥:Authorization: Bearer <密钥>(参见“身份验证”)。

操作 ​

获取备份状态 ​

GET HEAD /api/v1/backup/status

访问: 系统权限 backup.read · 重试: 可安全重试(读取)

汇总备份系统:备份存储(configured、available、可用和总字节数)、备份代理(online、上次心跳、版本)、计划、最新完成的恢复点、下一次计划运行、正在运行的作业,以及 warnings,每项是形如 agent_offline 或 backup_stale 的代码,严重程度为 warning 或 critical。代理离线时,备份存储被报告为不可用。其中不含路径或机密值。

响应 200

字段类型必需规则
vaultobject是—
vault.configuredboolean是—
vault.idstring (uuid)是可以为 null
vault.availableboolean是—
vault.encryptedboolean是可以为 null; 保管库是否已加密;未知或未连接时为 null。
vault.freeBytesstring是用十进制数字表示的整数,以字符串形式发送; 可以为 null
vault.totalBytesstring是用十进制数字表示的整数,以字符串形式发送; 可以为 null
agentobject是—
agent.onlineboolean是—
agent.lastSeenAtstring (date-time)是可以为 null
agent.versionstring是最多 64 个字符; 可以为 null
planobject是—
plan.enabledboolean是—
plan.hourinteger是0–23
plan.minuteinteger是0–59
plan.timezonestring是1–64 个字符; 明确指定的 IANA 时区,例如 Europe/Moscow;由服务器校验。
plan.retentionobject是—
plan.retention.dailyinteger是0–366
plan.retention.weeklyinteger是0–260
plan.retention.monthlyinteger是0–120
plan.revisioninteger是0–2147483647
lastCompletedobject是可以为 null
lastCompleted.idstring (uuid)是—
lastCompleted.snapshotAtstring (date-time)是快照时间 T;恢复点的存续时间从 T 起算。
lastCompleted.completedAtstring (date-time)是—
lastCompleted.blobsinteger是不小于 0
lastCompleted.contentBytesstring是用十进制数字表示的整数,以字符串形式发送
lastCompleted.newBytesstring是用十进制数字表示的整数,以字符串形式发送; 此恢复点加入备份存储的字节数。
lastCompleted.tablesinteger是不小于 0
lastCompleted.rowsinteger是不小于 0
lastCompleted.pinnedboolean是—
lastCompleted.verifiedAtstring (date-time)是可以为 null
lastCompleted.verifyDepthstring是取值之一:structural, deep, null; 可以为 null
lastCompleted.verifyErrorstring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null
nextRunAtstring (date-time)是可以为 null
runningobject是可以为 null
running.idstring (uuid)是—
running.kindstring是取值之一:capture, verify, retention
running.statestring是取值之一:queued, running, committing, completed, failed, interrupted
running.phasestring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null
running.startedAtstring (date-time)是开始执行的时间,排队期间则为请求时间。
running.finishedAtstring (date-time)是可以为 null
running.errorCodestring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null
running.pointIdstring (uuid)是可以为 null
running.progressobject是—
running.progress.bytesCopiedstring是用十进制数字表示的整数,以字符串形式发送; 已处理的字节数:已复制的,或已在备份存储中的。
running.progress.bytesTotalstring是用十进制数字表示的整数,以字符串形式发送
running.progress.blobsCopiedinteger是不小于 0
running.progress.blobsTotalinteger是不小于 0
warnings数组(object)是最多 10 项
warnings[].codestring是取值之一:vault_not_configured, agent_offline, schedule_disabled, no_backup_yet, backup_stale, last_run_failed, vault_unavailable, vault_low_space, verify_failed, never_deep_verified
warnings[].severitystring是取值之一:warning, critical

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/status" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

获取备份计划 ​

GET HEAD /api/v1/backup/plan

访问: 系统权限 backup.read · 重试: 可安全重试(读取)

返回每日计划(enabled,IANA timezone 中的 hour 和 minute)和保留策略(要保留的 daily、weekly、monthly 恢复点数),以及要回传给 updateBackupPlan 的 revision。未更改之前,计划处于禁用状态,计划时间为 UTC 02:00,保留 7 个每日、4 个每周和 6 个每月的恢复点。

响应 200

字段类型必需规则
enabledboolean是—
hourinteger是0–23
minuteinteger是0–59
timezonestring是1–64 个字符; 明确指定的 IANA 时区,例如 Europe/Moscow;由服务器校验。
retentionobject是—
retention.dailyinteger是0–366
retention.weeklyinteger是0–260
retention.monthlyinteger是0–120
revisioninteger是0–2147483647

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/plan" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

替换备份计划 ​

PUT /api/v1/backup/plan

访问: 系统权限 backup.manage · 重试: 仅在携带预期修订版本时重试(compare-and-swap)

替换整个计划:enabled、hour(0–23)、minute(0–59)、timezone 和 retention(最多 366 个每日、260 个每周、120 个每月)必须全部提供。expectedRevision 必须是当前修订版本,否则返回 409 revision_mismatch;无效字段返回 400,并在 details 中给出 JSON Pointer。代理从下一次检查起遵循新计划。

请求正文 (application/json)

字段类型必需规则
expectedRevisioninteger是0–2147483647
enabledboolean是—
hourinteger是0–23
minuteinteger是0–59
timezonestring是1–64 个字符; 明确指定的 IANA 时区,例如 Europe/Moscow;由服务器校验。
retentionobject是—
retention.dailyinteger是0–366
retention.weeklyinteger是0–260
retention.monthlyinteger是0–120

响应 200

字段类型必需规则
enabledboolean是—
hourinteger是0–23
minuteinteger是0–59
timezonestring是1–64 个字符; 明确指定的 IANA 时区,例如 Europe/Moscow;由服务器校验。
retentionobject是—
retention.dailyinteger是0–366
retention.weeklyinteger是0–260
retention.monthlyinteger是0–120
revisioninteger是0–2147483647

响应: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

示例

bash
curl -X PUT "$ARKVORY_URL/api/v1/backup/plan" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedRevision":0,"enabled":false,"hour":0,"minute":0,"timezone":"<timezone>","retention":{"daily":0,"weekly":0,"monthly":0}}'

立即请求备份 ​

POST /api/v1/backup/runs

访问: 系统权限 backup.manage · 重试: 使用相同的 Idempotency-Key 可安全重试

在计划之外为备份代理排队一次捕获,并返回 202 和该作业(kind 为 capture);代理先执行它,随后进行验证和保留。必须提供 Idempotency-Key:同一调用方重复使用它会返回同一个作业。在 listBackupJobs 中跟踪该作业。最多可同时有 100 个未完成的备份请求(507 queue_full);没有代理在线时,作业会等待。

参数

名称位置类型必需规则
Idempotency-Key标头string是匹配 ^[A-Za-z0-9_.:-]{1,128}$; Repeat returns the same job; per caller and operation kind.

响应 202

字段类型必需规则
idstring (uuid)是—
kindstring是取值之一:capture, verify, retention
statestring是取值之一:queued, running, committing, completed, failed, interrupted

响应: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

示例

bash
curl -X POST "$ARKVORY_URL/api/v1/backup/runs" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

列出备份作业 ​

GET HEAD /api/v1/backup/jobs

访问: 系统权限 backup.read · 重试: 可安全重试(读取)

按从新到旧的顺序,列出捕获、验证和保留作业,每个包含其 state(queued、running、committing、completed、failed、interrupted)、phase、时间、errorCode、生成的恢复点以及 progress(已处理的字节数和对象数)。每页包含 limit 个作业(1–100,默认 50);将 after 设为 next 即可继续。

参数

名称位置类型必需规则
after查询string否匹配 ^[0-9]{1,17}_[0-9a-f-]{36}$; next of the previous page
limit查询integer否1–100; 默认值 50

响应 200

字段类型必需规则
items数组(object)是最多 100 项
items[].idstring (uuid)是—
items[].kindstring是取值之一:capture, verify, retention
items[].statestring是取值之一:queued, running, committing, completed, failed, interrupted
items[].phasestring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null
items[].startedAtstring (date-time)是开始执行的时间,排队期间则为请求时间。
items[].finishedAtstring (date-time)是可以为 null
items[].errorCodestring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null
items[].pointIdstring (uuid)是可以为 null
items[].progressobject是—
items[].progress.bytesCopiedstring是用十进制数字表示的整数,以字符串形式发送; 已处理的字节数:已复制的,或已在备份存储中的。
items[].progress.bytesTotalstring是用十进制数字表示的整数,以字符串形式发送
items[].progress.blobsCopiedinteger是不小于 0
items[].progress.blobsTotalinteger是不小于 0
nextstring是匹配 ^[0-9]{1,17}_[0-9a-f-]{36}$; 可以为 null

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/jobs" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

列出备份恢复点 ​

GET HEAD /api/v1/backup/points

访问: 系统权限 backup.read · 重试: 可安全重试(读取)

列出当前备份存储中已完成的恢复点,快照最新的排在前面,每个包含快照时间 T、大小、加入备份存储的字节数、是否已固定(pinned)以及最近一次验证(verifiedAt、verifyDepth 为 structural 或 deep、verifyError)。每页包含 limit 个恢复点(1–100,默认 50);将 after 设为 next 即可继续。被替换的备份存储只显示它自己的恢复点。

参数

名称位置类型必需规则
after查询string否匹配 ^[0-9]{1,17}_[0-9a-f-]{36}$; next of the previous page
limit查询integer否1–100; 默认值 50

响应 200

字段类型必需规则
items数组(object)是最多 100 项
items[].idstring (uuid)是—
items[].snapshotAtstring (date-time)是快照时间 T;恢复点的存续时间从 T 起算。
items[].completedAtstring (date-time)是—
items[].blobsinteger是不小于 0
items[].contentBytesstring是用十进制数字表示的整数,以字符串形式发送
items[].newBytesstring是用十进制数字表示的整数,以字符串形式发送; 此恢复点加入备份存储的字节数。
items[].tablesinteger是不小于 0
items[].rowsinteger是不小于 0
items[].pinnedboolean是—
items[].verifiedAtstring (date-time)是可以为 null
items[].verifyDepthstring是取值之一:structural, deep, null; 可以为 null
items[].verifyErrorstring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null
nextstring是匹配 ^[0-9]{1,17}_[0-9a-f-]{36}$; 可以为 null

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/points" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

请求对备份恢复点进行深度检查 ​

POST /api/v1/backup/points/{id}/verify

访问: 系统权限 backup.manage · 重试: 使用相同的 Idempotency-Key 可安全重试

为恢复点 id 排队一次验证,它会读取该恢复点存储的每一个字节;响应为 202 和该作业,结果会出现在该恢复点的 verifiedAt、verifyDepth 和 verifyError 中。必须提供 Idempotency-Key,将它用于另一个恢复点会返回 409 idempotency_mismatch。未知的恢复点返回 404。

参数

名称位置类型必需规则
id路径string (uuid)是—
Idempotency-Key标头string是匹配 ^[A-Za-z0-9_.:-]{1,128}$; Repeat returns the same job; per caller and operation kind.

响应 202

字段类型必需规则
idstring (uuid)是—
kindstring是取值之一:capture, verify, retention
statestring是取值之一:queued, running, committing, completed, failed, interrupted

响应: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

示例

bash
curl -X POST "$ARKVORY_URL/api/v1/backup/points/$ID/verify" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

固定或取消固定备份恢复点 ​

PUT /api/v1/backup/points/{id}/pin

访问: 系统权限 backup.manage · 重试: 可安全重试:相同的请求效果相同

设置恢复点 id 的 pinned;被固定的恢复点会超出策略范围被保留规则保留,直到取消固定。再次设置相同的值不会产生任何变化,响应为更新后的恢复点。未知或已被移除的恢复点返回 404。

参数

名称位置类型必需规则
id路径string (uuid)是—

请求正文 (application/json)

字段类型必需规则
pinnedboolean是—

响应 200

字段类型必需规则
idstring (uuid)是—
snapshotAtstring (date-time)是快照时间 T;恢复点的存续时间从 T 起算。
completedAtstring (date-time)是—
blobsinteger是不小于 0
contentBytesstring是用十进制数字表示的整数,以字符串形式发送
newBytesstring是用十进制数字表示的整数,以字符串形式发送; 此恢复点加入备份存储的字节数。
tablesinteger是不小于 0
rowsinteger是不小于 0
pinnedboolean是—
verifiedAtstring (date-time)是可以为 null
verifyDepthstring是取值之一:structural, deep, null; 可以为 null
verifyErrorstring是匹配 ^[a-z][a-z0-9_]{0,63}$; 可以为 null

响应: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

示例

bash
curl -X PUT "$ARKVORY_URL/api/v1/backup/points/$ID/pin" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pinned":false}'

预览备份保留规则会保留什么 ​

GET HEAD /api/v1/backup/retention/preview

访问: 系统权限 backup.read · 重试: 可安全重试(读取)

显示保留策略会保留哪些恢复点,每个附带原因(daily、weekly、monthly、pinned、newest),以及现在会删除哪些。验证失败的恢复点不在考虑之列。该预览仅供参考:requestBackupRetention 运行时会根据备份存储重新决定。

响应 200

字段类型必需规则
keep数组(object)是—
keep[].idstring (uuid)是—
keep[].reasons数组(string)是每项:取值之一:daily, weekly, monthly, pinned, newest
delete数组(object)是—
delete[].idstring (uuid)是—

响应: 200, 400, 401, 403, 404, 409, 422, 503, 507

示例

bash
curl -X GET "$ARKVORY_URL/api/v1/backup/retention/preview" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

请求备份保留 ​

POST /api/v1/backup/retention/apply

访问: 系统权限 backup.manage · 重试: 使用相同的 Idempotency-Key 可安全重试

排队一个保留作业:代理移除策略之外的恢复点,然后删除不再被任何剩余恢复点使用的内容,因此只有作业完成后,空间才会回到备份存储。返回 202 和该作业;必须提供 Idempotency-Key,重复使用它会返回同一个作业。请先查看 previewBackupRetention。

参数

名称位置类型必需规则
Idempotency-Key标头string是匹配 ^[A-Za-z0-9_.:-]{1,128}$; Repeat returns the same job; per caller and operation kind.

响应 202

字段类型必需规则
idstring (uuid)是—
kindstring是取值之一:capture, verify, retention
statestring是取值之一:queued, running, committing, completed, failed, interrupted

响应: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

示例

bash
curl -X POST "$ARKVORY_URL/api/v1/backup/retention/apply" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

Arkvory · ProAnimaStudio