Rsync File Copying from Dired with Transient Menu

Async copying with TRAMP usually doesn’t work the way I want them to. Could be my wonky NAS, could be the file sizes.

Consistently, I have much better results with rsync from the terminal, but I don’t want to type the invocation every time I want to move a recorded video off my computer.

But there’s dired-rsync – and while a bit bare-bones when called interactively, it does the job.

(use-package dired-rsync :ensure)

The rsync progress is tracked in a buffer – a buffer that shows the shell output like you know it. No fancy decorations or anything.

With the transient menu, I can tweak settings interactively beforehand, to e.g. move a file from local to remote instead of copying it:

(use-package dired-rsync-transient
  :ensure
  :after (dired-rsync transient))

Because I’m a sucker for consistency, I also wanted to have that transient menu available from the other transient menu I like to start from – so here’s how to add this to casual-dired for discovery, bound to ‘Y’ (uppercase):

(with-eval-after-load 'dired-rsync-transient
  (with-eval-after-load 'casual-dired
    (transient-insert-suffix 'casual-dired-tmenu "R"  ;; between Copy and Rename
      '("Y" "Rsync" dired-rsync-transient))))