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

  -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
