backupally --capabilities
Declara, em JSON, o que o binário instalado sabe fazer de verdade —
drivers de storage e de banco, tipos de target, formatos de saída,
subcomandos, as flags do quick (lidas do parser, o que está na lista o
binário aceita de fato), os campos do envelope quick.execute e uma lista
fechada de features. Existe desde a 0.34.0 para quem integra com o
BackupAlly (ex.: uma UI) descobrir o que a versão instalada oferece sem
comparar número de versão ou fazer parsing de --help.
Sintaxe
backupally --capabilities
backupally --capabilities -o yamlSai sempre como JSON (não precisa de -o json); -o yaml é honrado. Em
human também sai JSON — não há formato "bonito" separado.
Saída
{
"success": true,
"timestamp": "2026-09-25T12:55:03Z",
"schema_version": "2.0",
"client": { "name": "backupally", "version": "0.35.0" },
"command": "capabilities",
"data": {
"envelope_schema_version": "2.0",
"storage_drivers": ["local", "b2", "s3"],
"database_drivers": ["mysql", "postgres", "mongodb", "clickhouse", "sqlite"],
"target_types": ["fileset", "database", "docker", "custom"],
"output_formats": ["human", "json", "yaml"],
"commands": ["config", "scheduler", "backup", "restore", "..."],
"quick": {
"flags": ["destination", "zip", "storage-type", "..."],
"storage_types": ["local"],
"envelope_fields": ["name", "backup_id", "..."],
"credentials_ref_suffixes": ["_access_key", "_secret_key"]
},
"features": [
"capabilities",
"quick.retention",
"quick.credentials_ref",
"quick.artifact_digest",
"quick.storage_types",
"task.list.rich",
"history.persistent",
"envelope.v2",
"storage.download",
"restore.from_storage",
"history.task_id",
"history.artifacts",
"history.artifacts.remote_path",
"history.artifacts.sha256",
"storage.local_path_only"
],
"storage": { "download": true }
}
}A versão fica só em client.version — o resto do snapshot não muda a cada
release, só quando uma capacidade muda de verdade.
Campos de `data`
| Campo | Tipo | Uso |
|---|---|---|
storage_drivers |
string[] | Drivers usados por tasks/schedules (storage/): hoje local, b2, s3 (Wasabi é s3 com endpoint) |
database_drivers |
string[] | Drivers de banco suportados |
target_types |
string[] | Tipos de target de task |
output_formats |
string[] | Formatos de -o |
commands |
string[] | Subcomandos disponíveis (informativo) |
quick.storage_types |
string[] | O que o quick grava de fato (hoje só ["local"]) — diferente de storage_drivers, que é o caminho de tasks |
quick.flags |
string[] | Flags do quick aceitas de verdade pelo parser |
quick.envelope_fields |
string[] | Campos possíveis em quick.execute |
quick.credentials_ref_suffixes |
string[] | Sufixos que --credentials-ref resolve no cofre (_access_key, _secret_key) |
features |
string[] | Lista fechada — ver tabela abaixo |
storage.download |
bool | Redundante com a feature storage.download |
Features e o que cada uma libera
| Feature | Desde | Libera |
|---|---|---|
capabilities |
0.34.0 | Confiar neste comando |
envelope.v2 |
0.34.0 | Envelope CCS 2.0 em todos os comandos |
quick.retention |
0.34.0 | quick --series/--retention-days (0.32.0) |
quick.credentials_ref |
0.34.0 | quick --credentials-ref |
quick.artifact_digest |
0.34.0 | quick.execute com artifact_path/bytes_total/sha256 |
quick.storage_types |
0.34.1 | data.quick.storage_types diz o que o quick realmente grava |
task.list.rich |
0.33.0 | task list -o json com a task inteira em cada item |
history.persistent |
0.33.0 | Histórico em /var/lib/backupally/logs (sobrevive a reboot) |
history.task_id |
0.35.0 | history --task <id> e o campo items[].task_id |
history.artifacts |
0.35.0 | items[].artifacts[] (qual arquivo foi para qual storage) |
history.artifacts.remote_path |
0.35.0 | artifacts[].remote_path — a chave que baixa em qualquer layout |
history.artifacts.sha256 |
0.35.0 | artifacts[].sha256, conferido no download/restore |
storage.download |
0.35.0 | storage download |
restore.from_storage |
0.35.0 | restore --from-storage |
storage.local_path_only |
0.35.0 | [[storage]] driver = "local" só com path, sem bucket |
Um binário anterior à 0.34.0 não conhece a flag: sai com exit 2 e erro do clap no stderr. Trate esse caso como "BackupAlly desatualizado" — não como uma lista de features vazia.
secret set --stdin, task validate --deep e task run --force não têm
feature própria: já existiam antes da 0.34.x e uma integração que já exige
capabilities pode assumi-las presentes.
Exemplo de Uso
if backupally --capabilities | grep -q '"storage.download"'; then
echo "este binário sabe baixar do storage"
fiPara checagem programática, prefira parsear o JSON e testar
data.features como lista, em vez de grep no texto bruto.