跨服务器比较文件

跨服务器比较文件

曾几何时,我记得做过大致类似这样的事情:

vimdiff <(scp://some_server/home/user/.zshrc) <(scp://some_server-qa/home/user/.zshrc)

(其中some_serversome_server-qa是在我的用户和密钥等中定义的~/.ssh/config,因此不必将其包含在 shell 中)。

问题是我无法弄清楚需要什么语法才能完成这项工作,并且我无法通过谷歌搜索找到任何内容。我确信这里有人知道我错过了什么。我缺少什么?

答案1

vim确实支持使用某些 URL 打开远程文件,因此您可以执行以下操作:

vimdiff scp://some_server{,-qa}/home/user/.zshrc

输入文档:h scp内的内容。vim

如果在构建时尚未启用该支持,您始终可以这样做:

vimdiff -R <(ssh some_server cat /home/user/.zshrc) \
           <(ssh some_server-qa cat /home/user/.zshrc)

尽管您将无法修改远程文件。

-Rvim为了提醒您编辑这些文件是没有意义的(尽管您总是可以这样做::w !ssh host 'cat > file'将编辑后的文件发回(或者只是:w !ssh host '>file'如果您的登录 shellhost也恰好zsh在默认情况$NULLCMDcat))。

答案2

一如既往,斯特凡的回答非常出色。这只是一个附录。如果您觉得这有帮助,请也为他的答案点赞。

我无法(无论出于何种原因)让该scp://方案与我的系统一起工作,但该sftp://方案确实对我有用:

vimdiff sftp://some_server{,-qa}/home/user/.zshrc

相关内容