使用emacs流浪汉rsync的与远程开发(Using emacs tramp vs. rsync

2019-08-16 23:09发布

我一直使用emacs流浪汉做一些远程开发和发现,这是很慢的。 我每次保存文件时,它需要大约10秒完成保存。 所以,我现在使用rsync的文件远程传输,它工作得更快,它需要大约一秒钟加上本地保存来自Emacs的是即时的。 是否有流浪汉中的任何配置选项来得到它一样快rsync的做在命令行上运行? 是否有任何优势,利用流浪汉,而不是rsync的,即使我看到这样的表现不佳?

Answer 1:

虽然流浪汉可以配置为使用大量的运输方法,我想你使用ssh连接到远程服务器。

我相信大部分的花费来完成操作的时间来自建立连接和认证。 如果你正在使用OpenSSH的新版本不够,这可以通过使用连接共享功能来帮助,请参阅ControlMaster在ssh_config中(5)。

我建议你试试

ControlMaster auto

,看看是否能改善这种情况。



Answer 2:

如果您使用流浪汉的SSH / SCP功能,你会发现开启了一个永久的SSH连接将流浪汉行动快很多:他们会重新使用现有的连接,而不是创建一个新的每次切割出一个很大而不会影响安全加密开销。 看到这篇文章的SSH ControlMaster功能。



Answer 3:

一对夫妇的答案都提到使ControlMaster保持持久的 ssh连接开放(避免了昂贵的连接建立/手发抖,否则需要通过ssh每个流浪汉操作),但你并不需要的Emacs之外的任何配置使用此-如果你看看tramp-methods的变量,你会看到有现有的方法,使ControlMaster。

具体而言, rsynccscpc方法。

连接的双方都需要支持ControlMaster,当然(例如Cygwin的不能这样做,这是Windows用户*丢人),但我建议设置这些为你的一个tramp-default-method

不具有持续连接使得扩展流浪汉使用率相当痛苦,但是有一个很令人难以置信的使用(到,给定一个相当快的连接点,你几乎可以忘记它的发生)。

在回答你的问题的最后一部分,是的,有使用的,而不是手动rsyncing文件流浪汉很好的理由。 主要的一个是shell命令可以直接在远程服务器上执行,而你甚至不必去想它,Emacs的需要的细节。

例如,从远程文件缓冲区, 的Mx shell RET打开远程服务器上的贝壳,像的Mx命令rgrep RETMX find-grep-dired RET将运行发现的grep +远程服务器上。 我认为,这通常适用于该调用shell命令的功能。

对我来说,这比足够的理由更多地使用流氓(除非在远程服务器上安装Emacs和使用本地显示是一个选项,在这种情况下,对于长期使用,我会考虑这样做,而不是)。

(*)当使用Windows我曾经在本地建立一个Linux VM和内部运行的Emacs(使用Cygwin提供的X显示)使用ControlMaster对流浪汉的唯一原因( https://stackoverflow.com/a/3049375/324105 )。



Answer 4:

你知道在gnu.org流浪汉文档中的一节提到使用rsync的? 它说,部分内容如下:

5.3外部转移方法

这个外部传送的方法通过多个信道进行操作,使用于许多操作远程外壳连接,同时委托的文件传输到外部传输工具。

这节省了编码和解码的复用通过一个连接具有与内联方法的传送的开销。

...

rsync的 - SSH和rsync使用ssh命令安全地连接到远程计算机和rsync命令来传输文件是几乎相同的SCP方法。

 While rsync performs much better than scp when transferring files that exist on both hosts, this advantage is lost if the file exists only on one side of the connection. The rsync based method may be considerably faster than the rcp based methods when writing to the remote system. Reading files to the local machine is no faster than with a direct copy. This method supports the '-p' hack. 


Answer 5:

对我来说,加速了显著! 现在,使用流浪汉真是愉快。 我也喜欢它在sshfs的,因为我也是从emacs的内部编译和流浪汉做远程编辑对我来说并解释编译器的错误信息对我来说:)



Answer 6:

既然你刚才说你有一个特定的服务器上的问题,检查问题的机器上sshd的配置文件。 这大概就像在/ etc / SSH / sshd_config中。

查找名为“UseDNS”配置选项。 设置为“No”

看看是否能不加快速度为您服务。 如果是这样,则SSH可能超时等待,你可能不关心反向DNS查找。



Answer 7:

最近,我来拥抱SSHFS让远程文件是在本地编辑。 非常适用于在Linux,Mac和Unix系统,并提出了SSH部分在一个命令,而不是每次访问。 而在用户空间完全存在。



Answer 8:

如果您使用的是ssh方法,你可以试试SFTP方法来代替,这(我相信)打开一个持久的SFTP连接到远程SSH服务器。 另外,如果你使用的是GNOME,你可以添加sftptramp-gvfs-methods有流浪汉连接到使用GNOME的GVFS SFTP服务器,这可能会或可能不会是更快/更方便。



文章来源: Using emacs tramp vs. rsync for remote development