Я нашел этот ответ весьма полезным: https://emacs.stackexchange.com/a/13802/10761. Чтение этого ответа показывает, что вы можете сделать так, что dired
будет копировать методом scp
вместо метода ssh
(последний изначально кодирует файл с gzip
и это может быть довольно медленным). Метод scp
будет копироваться только с помощью программы scp
, если файл больше tramp-copy-size-limit
(по умолчанию 10240
). Этот метод scp
в сочетании с dired-async-mode
очень удобен, поскольку он не только быстро копирует с помощью scp
, но также делает это асинхронно и вне вашего пути.
Кроме того, я думаю, что это полезно: https://oremacs.com/2016/02/24/dired-rsync/. Он предоставляет этот фрагмент кода для использования rsync
для копирования файлов в dired
:
;;;###autoload
(defun ora-dired-rsync (dest)
(interactive
(list
(expand-file-name
(read-file-name
"Rsync to:"
(dired-dwim-target-directory)))))
;; store all selected files into "files" list
(let ((files (dired-get-marked-files
nil current-prefix-arg))
;; the rsync command
(tmtxt/rsync-command
"rsync -arvz --progress "))
;; add all selected file names as arguments
;; to the rsync command
(dolist (file files)
(setq tmtxt/rsync-command
(concat tmtxt/rsync-command
(shell-quote-argument file)
" ")))
;; append the destination
(setq tmtxt/rsync-command
(concat tmtxt/rsync-command
(shell-quote-argument dest)))
;; run the async shell command
(async-shell-command tmtxt/rsync-command "*rsync*")
;; finally, switch to that window
(other-window 1)))
(define-key dired-mode-map "Y" 'ora-dired-rsync)