编辑远程服务器上的文件

Editing Files on a Remote server

我想知道在远程 linux 服务器上编辑文件的最佳方法是什么。

我一直在通过 ssh 使用 Emacs,效果很好。

但是,我也喜欢将文件复制到我的本地计算机然后在图形 Emacs 应用程序中编辑它们的想法。

通过 SSH 编辑或复制文件并在本地编辑它们有优点还是缺点?使用 rsync 或 SFTP 来回复制文件进行编辑哪个更好?

两全其美:使用 sshfs 将远程文件系统挂载到您的文件系统,然后使用常用的本地编辑器。 This answer 详细描述了如何做;并且您可以使用脚本自动执行它,这样它就毫不费力了。

Emacs 有一个用于这种编辑的内置功能,称为 Tramp。打开你的文件,如 C-x C-f /ssh:user@host:/path/to/file。如果 user@ 部分与您的本地用户名相同,则可以省略。

从发布的答案可以看出,有许多不同的方法可以满足您的要求。每个都有一些优点和缺点。哪种方式最适合您取决于您​​偏好的工作流程。

流浪汉

优势

  • 本地和远程工作之间的良好集成。一切都在一个 emacs 中,编辑远程文件与处理本地文件没有太大区别。
  • 远程编译。你可以这样设置,当你编译一个远程文件时,你也可以使用其他辅助开发的emacs模式,比如跳转到下一个错误
  • 多跳。有时,无法直接连接到远程服务器。您可能需要先登录到堡垒主机,然后再登录到目标机器。 Tramp 可以使这个过程几乎自动化
  • 易于使用。如果您使用密钥设置 ssh 并使用 ssh 代理,访问远程文件与本地文件没有什么不同

缺点

  • 需要可靠的互联网连接
  • 开始工作可能有点棘手,具体取决于您的本地和远程环境
  • 如果您的工作流程有点复杂,可能很难找到正确的工作流程,即可能很难集成远程构建工具,尤其是当它们非常特定于站点时

sshfs

优势

  • 如果您的本地计算机上有非 emacs 工具,并且您还想在文件上使用,这是一个很好的方法
  • 无需对 emacs 进行任何特殊配置。就emacs而言,这些只是本地文件

缺点

  • 如果您的互联网连接不稳定,可能会有点不可靠
  • 有效性有点取决于远程文件系统
  • 您的公司可能无法接受,具体取决于他们的安全性 policies/procedures

终端中的远程 Emacs

优势

  • 如果你有一个配置好的远程emacs,可以很容易。
  • 不需要本地配置的 emacs 并且可以在不同的平台上很好地工作 - 只需要一个终端和远程连接

缺点

  • 需要本地和远程 emacs 配置
  • 有时很难让所有键绑定在终端和 ssh 连接下正常工作
  • 不支持 GUI。要访问菜单,您需要使用绑定到 F10 的基于文本的菜单,这可能会出现问题,具体取决于终端和 ssh 配置

远程 X11

优势

  • 运行 使用 X11 的 emacs 远程 GUI 版本

    缺点

  • 可以慢一点。确实需要使用X11压缩协议来减少X11流量

  • 需要远程 emacs 配置设置
  • 需要良好的互联网连接。最好在 LAN 而不是 WAN

远程桌面

优势

  • 只需 运行 一个 rdp 客户端,您就可以看到您的远程系统就像直接登录一样。根据您的平台有很多选择(可能太多)
  • 如果您只是想远程访问您的工作站,即您的 owrk 系统,它已完全配置为支持您的需要,那就太好了

    缺点

  • RDP 类型客户端的质量似乎存在相当大的差异。如果你想从 Linux 到 Linux 很好,但在涉及混合平台时灵活性较低

  • 通常需要远程软件设置来支持 rdp 类型会话

我个人的选择是使用 Tramp。我曾经使用远程 X11 的东西,但是随着 emacs 下字体变得更加复杂,性能显着下降(尤其是在使用字体锁定时)。我还使用了 sshfs sshfs 解决方案,当您拥有要处理的整个目录树时,或者当您想对 emacs 之外的远程文件组等使用本地工具时,它非常有用。

我对远程文件和想以不同用户身份访问本地文件时都使用 tramp。例如,如果我想访问通常需要 su/sudo 访问权限的本地配置文件,您可以使用 tramp 来执行此操作。