如何使用 scp 或 rsync 使用 Tramp 传输文件

How to transfer files with Tramp using scp or rsync

我已经阅读了 TRAMP 手册和网络上的许多论坛,但我找不到这个问题的答案。我正在尝试在 org-mode 中设置一个 link 将文件从远程服务器传输到我的本地机器(反之亦然)。 根据手册,我必须写类似的东西 /scp:user@host:filepathonremotemachine 就是这样。没有指定文件应该移动到哪里,这很奇怪。 我试过这样做,它只是打开了文件(就像我在使用 ssh 一样);也尝试了其他组合,但没有任何运气。 我尝试使用流浪汉而不是 shell:command link 来执行此操作是有特定原因的。非常欢迎任何帮助

更新 显然 TRAMP 没有它承诺的那么有用。这给我留下了 shell:command link 选项。然后问题围绕着避免弹出的 openssh window 展开。我找到的最接近的解决方案是 here,它会继续设置 ssh-agent。我对这个过程不是很熟悉,我更愿意使用 authinfo.gpg 身份验证方法。我有这个选项吗?谢谢

Tramp 本身仅提供本机 Emeacs 函数的替代实现。从这个意义上说,它是愚蠢的,就像每个库一样,因为它不知道调用者想要什么。

我不是 org-mode 专家,但您能展示一下您想要哪种 link 吗? 没有任何偏远,只有link在本地复制文件。届时将本地文件名替换为远程文件名将很容易。

我假设,您需要类似外部 link 的东西来评估 Lisp 代码。喜欢

 elisp:(copy-file "/path/src" "/path/target")

以下作品(对于 "works" 的某些定义):

* link to copy a file

[[shell:scp remote.host.com:/path/to/file /tmp][scp]]

但是您必须事先安排了远程主机的无密码登录(例如ssh-copy-id您的public远程密钥):鉴于此, org 缓冲区中没有输出,没有 openssh 弹出窗口,只有来自 org-mode 的标准问题询问您是否 真的 想要执行 shell 命令和文件被悄悄地复制到它的目的地。