# snapdir sync Copy a snapshot (its manifest + objects) directly between two stores, streaming through memory — no local staging. `sync` transfers a snapshot from one store to another without writing it to the local cache. This is the efficient way to replicate snapshots between, say, two S3 buckets or from S3 to local. See the [Syncing guide](../guide/syncing.md). ## Usage ```text snapdir sync [OPTIONS] --from --to ``` ### Options `sync` requires both `--from` and `--to`: | Option | Description | | --- | --- | | `--from ` | Source store URI: `protocol://location/path`. | | `--to ` | Destination store URI: `protocol://location/path`. | It also accepts the [global options](overview.md#global-options); the most relevant are `--id` (snapshot to copy) and the transfer-tuning flags `-j`/`--jobs`, `--limit-rate`, and `--adaptive`. Both endpoints must be in-process stores (`file://`, `s3://`, `gs://`, `b2://`). External `snapdir-*-store` URLs — including `ssh://` and `sftp://` — are rejected; use `fetch` + `push` instead. ## Examples Copy a snapshot between two S3 buckets: ```console snapdir sync --id 1220abc... --from s3://bucket-a/snapshots --to s3://bucket-b/snapshots ``` Copy a snapshot from S3 down to a local file store: ```console snapdir sync --id 1220abc... --from s3://my-bucket/snapshots --to file:///srv/backups ``` ## See also - [`snapdir push`](snapdir-push.md) — upload from a directory or staged snapshot - [`snapdir fetch`](snapdir-fetch.md) — download a snapshot into the cache - [Syncing guide](../guide/syncing.md) - [Stores guide](../guide/stores.md)