Backups
The backup topic groups every command for policy-driven,
scheduled backups managed through the API. Under the hood these are
Velero backups: a backup policy defines what
to capture (cluster-wide, specific namespaces, or specific
applications) and when (a cron schedule), the API runs it as a
job, and the resulting artifacts land in one or
more S3-compatible destinations. A
captured artifact can later be replayed into a cluster with
restore.
flui backup …is notflui app backup …. This topic is the scheduled, policy-driven Velero surface that operates at the cluster/namespace/application level and is configured against the API.flui app backup create— documented on Applications — is a separate, one-off command that archives a single application’s volume to S3. Reach forapp backupfor an ad-hoc snapshot of one app’s data; reach forbackupwhen you want recurring, retained, multi-destination coverage of a whole cluster or set of workloads.
Unlike most of the CLI, the backup commands target the API directly
rather than a single active cluster, so they do not take the usual
-c, --cluster <name|id> flag. Where a command needs a cluster it
takes an explicit --cluster <id> (cluster ID, not name), and the
commands that read data accept --json for machine-readable output.
The sections below group the commands by intent: destinations, policies, jobs, and restores.
flui backup destination
A destination is an S3-compatible storage target where backup
artifacts are written. Supported providers are
hetzner_object_storage, scaleway_object_storage, minio, and
generic_s3.
flui backup destination create
Registers a new destination. All connection details are required:
provider, endpoint, region, bucket, and access/secret keys. Encryption
defaults to flui_managed; pass --encryption-mode byo_passphrase
with --encryption-passphrase to supply your own.
flui backup destination create \ --name my-s3 --provider hetzner_object_storage \ --endpoint https://fsn1.your-objectstorage.com \ --region fsn1 --bucket flui-backups \ --access-key AK --secret-key SK
flui backup destination create \ --name scw --provider scaleway_object_storage \ --endpoint https://s3.fr-par.scw.cloud \ --region fr-par --bucket flui-bkp \ --access-key AK --secret-key SK| Flag | Default | Effect |
|---|---|---|
--name <s> | — | Display name (≤120 chars). Required. |
--provider <p> | — | Storage backend: hetzner_object_storage, scaleway_object_storage, minio, generic_s3. Required. |
--endpoint <url> | — | S3 endpoint URL (e.g. https://s3.fr-par.scw.cloud). Required. |
--region <code> | — | S3 region. Required. |
--bucket <name> | — | Target bucket. Required. |
--access-key <k> | — | S3 access key. Required. |
--secret-key <s> | — | S3 secret key. Required. |
--prefix <s> | — | Optional path prefix inside the bucket. |
--encryption-mode <m> | flui_managed | flui_managed, byo_passphrase, or none. |
--encryption-passphrase <s> | — | Passphrase to use; required when --encryption-mode=byo_passphrase. |
--force-path-style | — | Force path-style S3 URLs (needed for MinIO / some providers). |
--use-sse | — | Use server-side encryption (SSE-S3) at the provider. |
--usable-for-etcd-l1 | — | Allow this destination to receive L1 etcd snapshots. |
--cost-per-gb-month-cents <n> | — | Provider cost in cents per GB·month, used for the billing estimate. |
flui backup destination list
Lists the destinations configured in the API, with provider, region/bucket, usage, and health when available.
flui backup destination listflui backup destination list --jsonflui backup destination show <id>
Shows one destination in full, including endpoint, prefix, encryption mode, health, and reported usage.
flui backup destination show <dest-id>flui backup destination show <dest-id> --jsonflui backup destination test <id>
Verifies connectivity to a destination by performing a real S3
PUT/GET/DELETE round-trip against the bucket. Use it right after
create to confirm the credentials and endpoint work.
flui backup destination test <dest-id>flui backup destination delete <id>
Removes a destination from the API. Existing artifacts already in
the bucket are NOT removed — only the registration is deleted. Asks
to confirm; skip with -y, --yes.
flui backup destination delete <dest-id>flui backup destination delete <dest-id> --yesflui backup policy
A policy ties a scope (what to back up) to a schedule and one
or more destinations. The API runs the policy on its cron schedule
(and on demand via backup job run),
producing artifacts subject to the policy’s retention.
flui backup policy create
Creates a policy. --name, --cluster (cluster ID), --scope, and
at least one --destination are required.
The scope decides what gets captured: cluster_all for the whole
cluster, namespaces (narrow it with --scope-namespaces ns1,ns2),
applications (narrow it with --scope-apps <id>,<id>), or
label_selector. The --destination flag is repeatable and takes a
spec of the form <destId>[:primary|replica[:priority]] — pass it
once per target to mirror a backup across several destinations.
flui backup policy create \ --name daily-all --cluster <cluster-id> \ --scope cluster_all --schedule "0 2 * * *" \ --retention-days 14 --destination <dest-id>
flui backup policy create \ --name app-snap --cluster <cluster-id> \ --scope applications --scope-apps <app-id>,<app-id> \ --destination <primary-id>:primary --destination <replica-id>:replica:1| Flag | Default | Effect |
|---|---|---|
--name <s> | — | Policy name. Required. |
--cluster <id> | — | Cluster ID the policy applies to. Required. |
--scope <s> | — | cluster_all, namespaces, applications, or label_selector. Required. |
--scope-namespaces <list> | — | Comma-separated namespaces (for scope=namespaces). |
--scope-apps <list> | — | Comma-separated application IDs (for scope=applications). |
--profile <p> | single | Destination profile: single, mirrored, or custom. |
--schedule <cron> | — | Cron schedule, e.g. "0 2 * * *" for daily 02:00 UTC. |
--retention-days <n> | 30 | Days to keep each artifact (minimum 1). |
--retention-max-copies <n> | — | Cap on the number of retained copies (minimum 1). |
--include-pvcs | — | Include persistent volume data in the backup. |
--include-etcd-l1 | — | Include an L1 etcd snapshot. |
--[no-]enabled | enabled | Create the policy disabled with --no-enabled. |
--destination <spec> | — | <destId>[:primary|replica[:priority]]. Required, repeatable. |
flui backup policy list
Lists policies, optionally filtered to one cluster. Each row shows the profile/scope, cluster, cron schedule, and whether it is disabled.
flui backup policy listflui backup policy list --cluster <cluster-id>flui backup policy list --jsonflui backup policy show <id>
Shows one policy: cluster, profile, scope, schedule, retention, and its destination list (each with role and priority).
flui backup policy show <policy-id>flui backup policy show <policy-id> --jsonflui backup policy delete <id>
Deletes a policy. Existing backups are kept — only the policy and
its schedule are removed. Asks to confirm; skip with -y, --yes.
flui backup policy delete <policy-id>flui backup policy delete <policy-id> --yesflui backup job
A job is one execution of a policy — either a scheduled run or an on-demand trigger. Jobs are where you see a backup’s status, timing, bytes transferred, and any error.
flui backup job run
Triggers an on-demand backup for a given policy, outside its normal
schedule. Returns the queued job’s ID so you can track it with
backup job show.
flui backup job run --policy <policy-id>flui backup job list
Lists the backup jobs for a cluster. --cluster (cluster ID) is
required.
flui backup job list --cluster <cluster-id>flui backup job list --cluster <cluster-id> --jsonflui backup job show <id>
Shows one job: its policy, status, start/completion times, bytes transferred, and error message if it failed.
flui backup job show <job-id>flui backup job show <job-id> --jsonflui backup restore
A restore replays a captured artifact back into a cluster. You can restore a whole cluster, a single namespace, one application, or the observability stack. Preview first to see exactly what a restore would touch.
flui backup restore preview
Dry-run that reports the resources a restore would create or replace, without changing anything. Takes the artifact ID and the destination it lives in. Output is JSON.
flui backup restore preview \ --artifact <artifact-id> --source-destination <dest-id>flui backup restore create
Creates a restore job. Required: the --artifact to restore, the
--source-destination it lives in, the --target-cluster to restore
into, and the --target-kind. For namespace and application targets,
also pass the matching selector flag.
flui backup restore create \ --artifact <artifact-id> --source-destination <dest-id> \ --target-cluster <cluster-id> --target-kind cluster
flui backup restore create \ --artifact <artifact-id> --source-destination <dest-id> \ --target-cluster <cluster-id> --target-kind application \ --target-app <app-id> --strategy velero_rebuild| Flag | Effect |
|---|---|
--artifact <id> | Backup artifact ID to restore. Required. |
--source-destination <id> | Destination where the artifact lives. Required. |
--target-cluster <id> | Cluster to restore into. Required. |
--target-kind <k> | cluster, namespace, application, or observability. Required. |
--target-namespace <ns> | Target namespace; required when --target-kind=namespace. |
--target-app <id> | Target application ID; required when --target-kind=application. |
--strategy <s> | Restore strategy: velero_rebuild or os_snapshot. |
flui backup restore list
Lists restore jobs, with status, target kind, and target cluster.
flui backup restore listflui backup restore list --jsonflui backup restore show <id>
Shows one restore job: status, source artifact and destination, target, strategy, timing, and error message if it failed.
flui backup restore show <restore-id>flui backup restore show <restore-id> --json