Skip to content

DCTL command documentation

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.

Setup#

CommandDescription
dctl configCreate and manage configuration and remotes.
dctl initCreate a vault and register both of its remotes.

Listing#

CommandDescription
dctl lsList objects with size and path.
dctl lsdList directories only.
dctl lslList objects with size, modification time and path.
dctl lsjsonList objects as JSON, one document per object.
dctl treeShow the object tree.
dctl sizeShow total size and object count.

Transfer#

CommandDescription
dctl copyCopy files from source to destination, skipping identical files.
dctl moveMove files, deleting the source only after a verified, durable commit. Destructive.
dctl syncMake the destination identical to the source. Deletes from destination. Destructive.
dctl copytoCopy a single file or directory to an exact destination name.
dctl movetoMove a single file or directory to an exact destination name. Destructive.

Replication#

CommandDescription
dctl replicateReplicate 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.

Content#

CommandDescription
dctl catWrite object contents to standard output.
dctl rcatRead standard input and write it to an object.

Removal#

CommandDescription
dctl deleteDelete objects in a path, honouring filters. Destructive.
dctl deletefileDelete a single named object. Destructive.
dctl purgeRemove a path and all of its contents. Destructive.
dctl rmdirRemove an empty directory. Destructive.
dctl rmdirsRemove empty directories under a path. Destructive.
dctl cleanupClean up a remote: abandoned uploads, stale temporary objects, old versions. Destructive.

Directories#

CommandDescription
dctl mkdirCreate a directory.
dctl touchCreate an object, or update its modification time.

Integrity#

CommandDescription
dctl verifyVerify that stored objects decrypt and match their recorded hashes.
dctl checkCompare source and destination without transferring.
dctl scrubRe-read and verify the whole dataset, reporting its health.
dctl hashsumPrint content hashes for objects.
dctl indexOperate on the local index: rebuild it from the backend.

Audit & recovery#

CommandDescription
dctl vaultOperate on a vault's key material: recover one with its recovery phrase.
dctl auditInspect and verify the tamper-evident audit log.
dctl backupBack up a local tree into a vault.
dctl restoreRestore a vault, or part of one, to a local tree.

Mount#

CommandDescription
dctl mountMount a remote as a filesystem.

Utility#

CommandDescription
dctl aboutShow remote usage, quota and capability information.
dctl versionShow version and build information.
dctl completionGenerate a shell completion script.

Compatibility aliases#

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.

AliasDocumented at
dctl putdctl copy — local file into a vault.
dctl getdctl copy — vault into a local file.
dctl rmdctl deletefile

Elsewhere in the docs#