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 yaml

Sai 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"
fi

Para checagem programática, prefira parsear o JSON e testar data.features como lista, em vez de grep no texto bruto.

By Borlot.com.br on 25/09/2026