```
$ snapdir --help
Content-addressable directory snapshots.
Usage: snapdir [OPTIONS] <COMMAND>
Commands:
manifest Print the manifest of a directory
id Print the manifest ID of a directory or a manifest piped via stdin
stage Save a snapshot of a directory into the local cache
push Push a snapshot to a store given its path or a staged manifest ID
fetch Fetch a snapshot from a store into the local cache
pull Fetch a snapshot from a store and check it out to the given path
checkout Check out a snapshot to a directory
verify Verify the integrity of a staged snapshot
verify-cache Verify the integrity of the local cache
flush-cache Flush the local cache
locations List directories and stores where snapshots have been recorded
ancestors List ancestor snapshot IDs and their locations
revisions List snapshot IDs created on a location (store or absolute path)
defaults Print default settings and arguments
sync Copy a snapshot (its manifest + objects) directly between two stores, streaming through memory — no local staging
diff Compare two sides, each a set of manifests, reporting file-level differences — reading MANIFESTS ONLY
version Print the version
help Print this message or the help of the given subcommand(s)
Options:
--cache-dir <DIR>
Directory where the object cache is stored
[env: SNAPDIR_CACHE_DIR=]
--catalog <NAME>
Catalog adapter to use
[env: SNAPDIR_CATALOG=]
--store <URI>
Store URI: `protocol://location/path`
[env: SNAPDIR_STORE=]
--objects-store <URI>
Shared object-pool store URI: when set, content OBJECTS route to this pool's `.objects/` while MANIFESTS route to `--store`'s `.manifests/`
[env: SNAPDIR_OBJECTS_STORE=]
--id <ID>
Snapshot ID to operate on
--exclude <PATTERN>
Exclude paths matching PATTERN
--paths <PATTERN>
Only include paths matching PATTERN
--linked
Use symlinks instead of copies
--force
Force an action to run
--purge
Purge objects with invalid checksums
--keep
Keep the staging directory
--dryrun
Run without making any changes
--verbose
Enable verbose output
--debug
Enable debug output
--no-progress
Disable the live progress line (transfers still run)
[env: SNAPDIR_NO_PROGRESS=]
-q, --quiet
Suppress stderr banners and the live progress line
--color <WHEN>
When to colorize progress output: auto, always, or never
[default: auto]
--location <DIR|STORE>
Context (directory or store) for catalog queries
-j, --jobs <N>
Max concurrent object transfers (0/auto = number of CPUs, capped)
[env: SNAPDIR_JOBS=]
--walk-jobs <N>
Max parallel file-hashing jobs during the directory walk (0/auto = number of CPUs, capped). Distinct from --jobs (transfer concurrency)
[env: SNAPDIR_WALK_JOBS=]
--limit-rate <RATE>
Limit total transfer bandwidth, e.g. 10M, 512K, 1G (wget-style; aggregate across all transfers)
[env: SNAPDIR_LIMIT_RATE=]
--adaptive[=<FRACTION>]
Adaptively tune transfer concurrency/bandwidth toward a fraction (default 0.8) of measured CPU/network capacity; backs off under contention. Opt-in; default is full speed.
Presence (with or without a value) opts in; the optional value is the politeness fraction in `(0.0, 1.0]`.
[env: SNAPDIR_ADAPTIVE=]
--max-jobs <N>
Adaptive concurrency ceiling (only meaningful with `--adaptive`). When unset, defaults to the auto concurrency; clamped to a sane upper bound
[env: SNAPDIR_MAX_JOBS=]
--max-retries <N>
Total retry attempts per network request, including the first (default 5)
--retry-base-ms <MS>
Base backoff delay in milliseconds for request retries (default 250)
--retry-max-ms <MS>
Maximum backoff delay in milliseconds for request retries (default 30000)
--max-requests <N>
Cap request rate (req/s); 0/unset uses the per-backend default
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```