One page per command, grouped by workflow rather than alphabetically — the same
order dctl --help prints: set it up, look at it, move data, remove data, prove
the data is intact, mount it.
New here? Read three pages, in this order.
dctl config tells you where the configuration file lives,
what may go in it, and why no credential ever does.
dctl copy is the transfer verb to learn first: it adds and
updates but never removes, so a mistyped argument costs bandwidth rather than
data. dctl sync is the one that deletes — read it before
you run it, not after. Everything else is a variation on those three.
dctl is the root page: what the tool is, the REMOTE:PATH
syntax (including why C:\data is always a local path and never a remote named
C), the configuration file's location on each platform, the global options,
and the exit-code contract.
Commands marked destructive can remove data. They prompt under
--interactive, and refuse without --force where the blast radius is a whole
tree. Every command accepts --dry-run.
| Command | Description |
|---|
| dctl config | Create and manage configuration and remotes. |
| dctl init | Create a vault and register both of its remotes. |
| Command | Description |
|---|
| dctl ls | List objects with size and path. |
| dctl lsd | List directories only. |
| dctl lsl | List objects with size, modification time and path. |
| dctl lsjson | List objects as JSON, one document per object. |
| dctl tree | Show the object tree. |
| dctl size | Show total size and object count. |
| Command | Description |
|---|
| dctl copy | Copy files from source to destination, skipping identical files. |
| dctl move | Move files, deleting the source only after a verified, durable commit. Destructive. |
| dctl sync | Make the destination identical to the source. Deletes from destination. Destructive. |
| dctl copyto | Copy a single file or directory to an exact destination name. |
| dctl moveto | Move a single file or directory to an exact destination name. Destructive. |
| Command | Description |
|---|
| dctl replicate | Replicate a vault's ciphertext objects to a second store. No password. |
The only transfer verb that needs no vault password: it moves opaque
ciphertext between two object stores, so a backup operator can satisfy 3-2-1
without ever holding decryption capability. It deletes nothing, and it refuses
every filter — a partial replica is not a vault.
| Command | Description |
|---|
| dctl cat | Write object contents to standard output. |
| dctl rcat | Read standard input and write it to an object. |
| Command | Description |
|---|
| dctl delete | Delete objects in a path, honouring filters. Destructive. |
| dctl deletefile | Delete a single named object. Destructive. |
| dctl purge | Remove a path and all of its contents. Destructive. |
| dctl rmdir | Remove an empty directory. Destructive. |
| dctl rmdirs | Remove empty directories under a path. Destructive. |
| dctl cleanup | Clean up a remote: abandoned uploads, stale temporary objects, old versions. Destructive. |
| Command | Description |
|---|
| dctl mkdir | Create a directory. |
| dctl touch | Create an object, or update its modification time. |
| Command | Description |
|---|
| dctl verify | Verify that stored objects decrypt and match their recorded hashes. |
| dctl check | Compare source and destination without transferring. |
| dctl scrub | Re-read and verify the whole dataset, reporting its health. |
| dctl hashsum | Print content hashes for objects. |
| dctl index | Operate on the local index: rebuild it from the backend. |
| Command | Description |
|---|
| dctl vault | Operate on a vault's key material: recover one with its recovery phrase. |
| dctl audit | Inspect and verify the tamper-evident audit log. |
| dctl backup | Back up a local tree into a vault. |
| dctl restore | Restore a vault, or part of one, to a local tree. |
| Command | Description |
|---|
| dctl mount | Mount a remote as a filesystem. |
The prototype CLI's verbs still parse, so existing scripts keep working. They
are hidden from --help and delegate to the modern command, which is what new
scripts should spell.
- ../FORMAT.md — the on-disk container and index format.
- ../EXIT_CODES.md — the exit-code contract in full.