Skip to content

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 not flui 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 for app backup for an ad-hoc snapshot of one app’s data; reach for backup when 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.

Terminal window
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
FlagDefaultEffect
--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_managedflui_managed, byo_passphrase, or none.
--encryption-passphrase <s>Passphrase to use; required when --encryption-mode=byo_passphrase.
--force-path-styleForce path-style S3 URLs (needed for MinIO / some providers).
--use-sseUse server-side encryption (SSE-S3) at the provider.
--usable-for-etcd-l1Allow 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.

Terminal window
flui backup destination list
flui backup destination list --json

flui backup destination show <id>

Shows one destination in full, including endpoint, prefix, encryption mode, health, and reported usage.

Terminal window
flui backup destination show <dest-id>
flui backup destination show <dest-id> --json

flui 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.

Terminal window
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.

Terminal window
flui backup destination delete <dest-id>
flui backup destination delete <dest-id> --yes

flui 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.

Terminal window
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
FlagDefaultEffect
--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>singleDestination profile: single, mirrored, or custom.
--schedule <cron>Cron schedule, e.g. "0 2 * * *" for daily 02:00 UTC.
--retention-days <n>30Days to keep each artifact (minimum 1).
--retention-max-copies <n>Cap on the number of retained copies (minimum 1).
--include-pvcsInclude persistent volume data in the backup.
--include-etcd-l1Include an L1 etcd snapshot.
--[no-]enabledenabledCreate 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.

Terminal window
flui backup policy list
flui backup policy list --cluster <cluster-id>
flui backup policy list --json

flui backup policy show <id>

Shows one policy: cluster, profile, scope, schedule, retention, and its destination list (each with role and priority).

Terminal window
flui backup policy show <policy-id>
flui backup policy show <policy-id> --json

flui 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.

Terminal window
flui backup policy delete <policy-id>
flui backup policy delete <policy-id> --yes

flui 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.

Terminal window
flui backup job run --policy <policy-id>

flui backup job list

Lists the backup jobs for a cluster. --cluster (cluster ID) is required.

Terminal window
flui backup job list --cluster <cluster-id>
flui backup job list --cluster <cluster-id> --json

flui backup job show <id>

Shows one job: its policy, status, start/completion times, bytes transferred, and error message if it failed.

Terminal window
flui backup job show <job-id>
flui backup job show <job-id> --json

flui 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.

Terminal window
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.

Terminal window
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
FlagEffect
--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.

Terminal window
flui backup restore list
flui backup restore list --json

flui backup restore show <id>

Shows one restore job: status, source artifact and destination, target, strategy, timing, and error message if it failed.

Terminal window
flui backup restore show <restore-id>
flui backup restore show <restore-id> --json