GitHub - stsquad/dired-rsync: Support for rsync from Emacs dired buffers
source link: https://github.com/stsquad/dired-rsync
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.org
dired-rsync – asynchronous rsync from dired
Introduction
This package adds a single command dired-rsync
which allows the user
to copy marked files in a dired
buffer via rsync. This is useful,
especially for large files, because the copy happens in the background
and doesn’t lock up Emacs. It is also more efficient than using tramps
own encoding methods for moving data between systems.
Configuration is simple as you only need to bind the dired-rsync
command to your prefered dired
binding.
(use-package dired-rsync :config (bind-key "C-c C-r" 'dired-rsync dired-mode-map))
Customisation
A variable called dired-rsync-modeline-status
is provided for mode
lines that will report the number of active rsync operations in
progress. However by default that value is also set in
mode-line-process
which is a common place for things to report
inferior process status. The variable dired-rsync-job-count
contains
the number of currently active dired-rsync
jobs currently running.
For those that don’t like the way dired-rsync
unmarks transferred
files when it completes please see dired-rsync-unmark-on-completion
.
The options dired-rsync-command
and dired-rsync-options
are there
to modify the call to rsync but a user is unlikely to need to tweak
these.
Technical Notes
While you can use rsync to copy files locally the main use case is copying files to/from a remote system. The rsync tool is always run locally as rsync needs working SSH authentication to work. If you can access a remote machine via tramp/ssh without having to enter a password (because ssh-agent is working) then rsync should work fine.
The test used by dired-rsync
is tramp-tramp-file-p
which will mean
any tramp path will attempt to be converted to an rsync path with
optional ssh transport. Obviously if your remote target doesn’t also
have ssh running and remote rsync binary this will fail. The reporting
could be improved.
There have been several attempts at doing this but I found them wanting in usability. This attempts to clean up the ideas from:
- https://truongtx.me/tmtxt-dired-async.html
- https://oremacs.com/2016/02/24/dired-rsync/
- https://vxlabs.com/2018/03/30/asynchronous-rsync-with-emacs-dired-and-tramp/
in a hopefully cleaner and more idiomatic way.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK