CLI reference / recovery / migrate

stado recovery migrate

Invocation

stado recovery migrate [OPTIONS] --from <FROM> --to <TO> --enable-provider <ENABLE_PROVIDERS>

Purpose

Drain, copy, verify, cut over selected services, and optionally resume

Required inputs and options

Input or optionContract
--from <FROM>Source backend
--to <TO>Destination backend
--from-bucket <FROM_BUCKET>Source bucket (gcs, s3) [default: ""]
--to-bucket <TO_BUCKET>Destination bucket (gcs, s3) [default: ""]
--from-account <FROM_ACCOUNT>Source storage account (azure) [default: ""]
--to-account <TO_ACCOUNT>Destination storage account (azure) [default: ""]
--from-container <FROM_CONTAINER>Source container (azure) [default: ""]
--to-container <TO_CONTAINER>Destination container (azure) [default: ""]
--from-path <FROM_PATH>Source root directory (local) [default: ""]
--to-path <TO_PATH>Destination root directory (local) [default: ""]
--from-region <FROM_REGION>Source region (s3); empty defers to the AWS default chain [default: ""]
--to-region <TO_REGION>Destination region (s3); empty defers to the AWS default chain [default: ""]
--writer <WRITERS>Every source writer Stado must stop before copying. HOST:SERVICE; repeatable. Omit only with --source-offline
--source-offlineAssert that no unlisted source writer can run, including schedulers, Cloud Functions, Cloud Run jobs, coordinators, monitors, and agents
--activate <ACTIVATE>Service to restart on the destination after config cutover. HOST:SERVICE; repeatable. Every activated service is fenced first
--enable-provider <ENABLE_PROVIDERS>Complete compute-provider allowlist after cutover. Repeatable; gcp is rejected
--resumeResume dispatch and claims after every other step. Without it the destination stays paused
--drain-timeout <DRAIN_TIMEOUT>Maximum seconds to wait for running/ to drain on each store [default: 900]
--concurrency <CONCURRENCY>Objects copied in parallel [default: 10]
--config <CONFIG>Config file to atomically rewrite. Defaults to Stado's resolved file
--manage-gcp-billingAttach GCP billing only for source fencing, copy, and verification, then detach it
--gcp-project <GCP_PROJECT>GCP project whose billing window may be managed
--gcp-billing-account <GCP_BILLING_ACCOUNT>Full billingAccounts/... name restored for the migration window
--confirm-billing-window <CONFIRM_BILLING_WINDOW>Must exactly repeat --gcp-project before a billable API call is made
--dry-runValidate and print the plan; perform no network or filesystem writes and no billing change

Output and state effect

It performs the operation described above and emits its operator result on standard output or standard error. Any state change is limited to the resources and records named by the purpose and options on this page.

Refusals

  • Every source writer Stado must stop before copying.
  • Must exactly repeat --gcp-project before a billable API call is made
  • Before dispatch, Stado refuses a missing required token shown in the invocation, an unknown option, or a value outside a listed value set; argument-usage failures exit with code 2.