dumont

Commands

Every verb, its flags, and what it does.

dumont cp [-r] [-n] [-v] [--dry-run] <src> <dst>   copy; '-' = stdin/stdout; cross-remote OK
dumont mv [-n] [-v] [--dry-run] <src> <dst>        rename within a remote; cross-remote = copy+delete
dumont sync [--delete] [--dry-run] <src> <dst>     one-way incremental mirror (copies only changes)
dumont ls   [-l] [-R] <path>                       list a directory or file
dumont cat  <path>                                 stream a file to stdout
dumont stat <path>                                 metadata + the backend's capabilities
dumont rm   [-r] [-v] [--dry-run] <path>           remove a file or directory
dumont mkdir [-p] <path>                            create a directory
dumont caps <remote-or-uri>                        print a backend's advertised capabilities
dumont remote ls                                   list configured remotes + aliases (no secrets)
dumont remote test <name>                          resolve a remote's credentials and probe liveness

Copy — cp

Copies a file or (with -r) a directory tree. Source and destination may live on different backends; dumont streams the bytes between them. - is stdin as a source and stdout as a destination.

dumont cp ./report.csv aws://bucket/reports/
echo hi | dumont cp - mem://vol/note.txt
dumont cp -r ./project /tmp/backup/

Move — mv

Renames within a single remote. Across remotes it degrades to a copy followed by a delete of the source. Whether the within-remote rename is atomic depends on the backend (capabilities).

Sync — sync

Makes <dst> mirror <src>, copying only files that are missing or changed (by size, or source-newer-than-dest mtime). It is idempotent and works across remotes.

dumont sync ./site cdn://www              # copy new/changed files
dumont sync ./site cdn://www --delete     # also prune files not in the source
dumont sync ./site cdn://www --dry-run    # show what would happen, touch nothing

Checksum-based comparison is a planned follow-on; today comparison is by size and mtime.

Listing & reading — ls, cat, stat

dumont ls -l aws://bucket/dir/     # long form (size, mtime)
dumont ls -R aws://bucket/dir/     # recursive
dumont cat aws://bucket/file.txt   # stream to stdout
dumont stat aws://bucket/file.txt  # metadata + the backend's capabilities

Remove & create — rm, mkdir

dumont rm aws://bucket/file.txt
dumont rm -r aws://bucket/dir/
dumont mkdir -p aws://bucket/a/b/c

Introspection — caps, remote

dumont caps aws            # advertised capabilities of a backend
dumont remote ls           # configured remotes + local aliases (no secrets)
dumont remote test aws     # resolve credentials + liveness probe

Safety flags

On cp / mv / rm:

  • -n / --no-clobber — skip destinations that already exist.
  • --dry-run — print intended actions to stderr without touching anything.
  • -v / --verbose — print each action as it happens.

dumont also guards against same-file copies and copying a directory into itself.

On this page