---
source: src/main.rs
expression: sub.render_long_help().to_string()
---
Copy canonical data between pond stores, `.pond` archives, and the JSONL wire stream.
Both `--from` and `--to` are required. Each endpoint is sniffed by suffix: `*.pond` is a compact restorable archive, `*.jsonl` (or `-` for stdout) is the JSONL wire stream and is export-only, anything else is a pond store URL - `local` is the local default dir, `@` is your configured store (the one every other command uses). Store-to-store copies are an idempotent union merge (`lance-deterministic-pk` + merge-insert): re-runnable, resumable, incremental (a re-run transfers only the sessions absent or grown on the destination), valid onto a populated destination, never deletes or modifies the source; they rebuild the destination indexes, verify every row landed, and exit 6 if any are missing. `--verify-only` runs just the read-only membership check (store-to-store only). This is the durable-corpus copy path, distinct from `pond sync` which re-reads your client tools (spec.md#session-durable-copy).
Usage: pond copy [OPTIONS] --from <URL|FILE> --to <URL|FILE>
Options:
--from <URL|FILE>
Source endpoint: a store URL, `local` (local default dir), `@` (configured store), or a `*.pond` archive
--to <URL|FILE>
Destination endpoint: a store URL, `local`, `@`, a `*.pond` archive, a `*.jsonl` file, or `-` for stdout
--verify-only
Only verify the destination already contains the source - copy nothing, rebuild no indexes. Read-only; store-to-store only
--no-optimize
Skip the post-copy index rebuild (store-to-store and archive restore, for very large stores you will index later). Build indexes after with `pond optimize --only index --storage-path <to>`
-h, --help
Print help (see a summary with '-h')
Global options:
--storage-path <URL>
Storage destination: a local path or remote URL.
Accepts a bare path, `~/path`, `file://`, `s3://bucket/prefix`, `s3+https://host/bucket/prefix`, `gs://`, `az://`, or the keyword `local` (the platform default local data dir). Default: `[storage].path` from config, then the platform data dir (`~/.local/share/pond`).
[env: POND_STORAGE_PATH]
--config-file <PATH>
Config file to read (default: `~/.config/pond/config.toml`)
[env: POND_CONFIG_FILE]
-v, --verbose...
Increase logging verbosity
-q, --quiet...
Decrease logging verbosity
Examples:
pond copy --from local --to s3+https://host/bucket/pond migrate the local store to a bucket
pond copy --from @ --to backup/2026-06-16.pond snapshot the configured store to an archive
pond copy --from backup/2026-06-16.pond --to @ restore an archive into the configured store
pond copy --from @ --to s3://bucket/pond --verify-only re-check membership, copy nothing
pond copy --from @ --to - | jq . stream the configured store as JSONL