vscode使用sftp插件同步多个服务器
preface
我大概两年前就开始用 vscode 了,虽然很好用,但是后来由于它对 pytorch 的补全不太彳亍,以及一份代码同步到多个远程服务器很不方便便转向了 pycharm,之前用 vscode 的时候直接将代码放在服务器上修改,但是有时候会没有显卡跑,而另一台服务器显卡有空闲,要将代码同步就很麻烦,而用 pycharm 的话就可以绑定多个服务器,在本地只需要维护一份代码,哪台服务器有空闲就上传到哪台服务器,这样就很方便。前几天因故 pycharm 出了点问题,又准备开始用 vscode,vscode 和 pycharm 的差别就只有同步多个服务器的功能了,之前我找过,没有合适的插件,然后在实验室同学的研究下发现了 sftp
这个插件,一番配置,好像真的可以完成这个功能。
下载插件
首先去 vscode 插件下载处输入 sftp
,有三个,选择第二个,作者是 natizyskunk
,原版作者的仓库已经几年没维护了,有很多 bug,这个老外接手了这个插件并维护。
配置 config
按住 ctrl+shift+p
,就会出现菜单栏,输入 sftp
就会出现和插件相关的内容
选择第二个 sftp: config
就会在项目的 .vscode
下面生成一个 sftp.json
文件,里面就是我们要使用的连接配置,下面是我的模板,如下,我添加了两个服务器,remotepath
是本地的文件在远程上对应的目录,没有的话会自动生成,ignore
就把不想同步的文件添加上去,类似 .gitignore
{ "name": "✌", "protocol": "sftp", "port": 22, "profiles": { "159": { "host": "", "username": "", "password": ".", "remotepath": "/data1/kevin/goubatest" }, "190": { "host": "", "username": "", "password": "", "remotepath": "/raid/kevin/mmdet180" } }, "uploadonsave": true, "downloadonopen":false, "ignore": [ ".vscode", ".git", ".ds_store", ".github", ".dev_scripts", ".idea", "show_dirs/*", "work_dirs/*", "checkpoints/*", "data" ], "watcher": { "files": "data/*", "autoupload": true, "autodelete": false }, "defaultprofile": "159" }
整完了之后就可以将文件上传到服务器了,注意上面我用了 defaultprofile
这个配置来添加一个默认的远程服务器,如果没有的话,就需要输入 sftp: set profile
来选择一个远程服务器,选好了之后下方就会出现对应的服务器名字
然后在左边的文件栏里可以将所有文件同步上去,也可以只同步一部分文件,也可以将远程的东西同步到本地,很方便
上传之后可以在左边的 sftp 工具栏中看到对应的远程目录下的文件,而且打开后是只读的,在文件的前面会有一个 ~
波浪线,这点挺好的,防止误编辑。我觉得这个插件比 pycharm 的功能要好,他会对比本地和远程的不同,用 sync local/remote/both
的话,他只会上传两边不同的文件,相同的文件不会上传,pycharm 的话是直接给传上去了,要是我本地有个巨大的文件,每次上传都得花很久时间。
要是想再将代码传到另一个服务器上的话,只需要 sftp: set profile
选择另一个服务器再上传一遍就行了。
曲线救国
同步代码的问题解决了,本以为能够抛弃 pycharm 了,但是还有一个问题,那就是自动补全,如果这份代码需要的库在远程服务器上安装了,但是在本地没有安装的话,是无法进行自动补全的,只能在本地也装一份,常规的库也就算了,有些库不支持 windows,就装都装不了,这是个很头疼的事,我和 jlchen 讨论了一下有没有可能曲线救国,最终还真有,那就是,抛弃本地环境,直接返璞归真,在一台远程服务器上直接操作代码,完了再同步到其他服务器,也就是相当于将一台装有环境的服务器当成客户端,利用 sftp 插件将代码传到另外的服务器,这样子的话呢,就能够解决自动补全的问题了!
可能的 bugs
每次 sftp: set profile
都显示没有合适的 profile,只要将 sftp.json
重新替换一下(不使用它自动生成的)就行了,我盲猜是因为文件编码的问题(fileencoding=unix/dos),还没空去验证是不是这个问题
reference
补充介绍:vscode 使用 sftp 插件实现多服务器同步
vscode 使用 sftp 插件实现多服务器同步
作为一名开发者,代码编辑器的选择对工作效率有着重要影响。我曾经因为 vscode 在某些功能上的不足,比如对 pytorch 的补全不够理想以及代码同步到多个远程服务器的不便,而转向了 pycharm。在 pycharm 中,可以方便地绑定多个服务器,在本地维护一份代码,然后根据服务器的资源情况灵活地上传到不同的服务器,这确实很方便。然而,最近由于 pycharm 出了一些问题,我决定重新尝试使用 vscode,而 vscode 和 pycharm 在功能上的主要差距就在于同步多个服务器这一点。不过,经过一番探索,我发现了一个名为 sftp
的插件,经过配置后,它似乎能够很好地解决这个问题。
下载插件
在 vscode 的插件市场中搜索 sftp
,会找到多个相关插件。我们需要选择作者是 natizyskunk
的那个版本。因为原版作者的仓库已经多年没有维护了,存在很多问题,而这个版本是由一位开发者接手并持续维护的,相对来说更加稳定可靠。
配置sftp.json
按下 ctrl+shift+p
组合键,调出 vscode 的命令面板,在其中输入 sftp
,然后选择 sftp: config
命令。这样,vscode 会在项目的 .vscode
文件夹下生成一个 sftp.json
配置文件,我们可以在其中设置连接的相关参数。
以下是一个配置示例,其中添加了两个服务器的连接信息。remotepath
是本地文件在远程服务器上对应的目录路径,如果该路径不存在,插件会自动创建。ignore
部分则可以列出一些不需要同步的文件或文件夹,类似于 .gitignore
文件的作用。
{ "name": "✌", "protocol": "sftp", "port": 22, "profiles": { "159": { "host": "服务器1的ip地址", "username": "服务器1的用户名", "password": "服务器1的密码", "remotepath": "/data1/kevin/goubatest" }, "190": { "host": "服务器2的ip地址", "username": "服务器2的用户名", "password": "服务器2的密码", "remotepath": "/raid/kevin/mmdet180" } }, "uploadonsave": true, "downloadonopen": false, "ignore": [ ".vscode", ".git", ".ds_store", ".github", ".dev_scripts", ".idea", "show_dirs/*", "work_dirs/*", "checkpoints/*", "data" ], "watcher": { "files": "data/*", "autoupload": true, "autodelete": false }, "defaultprofile": "159" }
在配置完成后,就可以开始将文件上传到服务器了。如果设置了 defaultprofile
,那么在启动插件时会自动连接到指定的默认服务器。
在 vscode 的左侧文件栏中,可以方便地将所有文件同步上传到服务器,也可以选择只同步部分文件,或者将远程服务器上的文件同步到本地,操作非常灵活。
上传文件后,在左侧的 sftp 工具栏中可以看到远程目录下的文件列表。这些文件默认是只读的,文件名前会有一个 ~
波浪线作为标识,这样可以有效防止误编辑。我认为这个插件在这方面比 pycharm 做得更好。它会自动对比本地和远程文件的差异,当使用 sync local/remote/both
功能时,只会上传那些存在差异的文件,而不会对相同的文件进行重复上传。相比之下,pycharm 会直接上传所有文件,如果本地存在一些体积较大的文件,每次上传都会耗费很多时间。
如果需要将代码同步到另一台服务器,只需要通过 sftp: set profile
命令切换到目标服务器,然后再进行上传操作即可。
总之,通过使用 sftp 插件,vscode 在多服务器代码同步方面的功能得到了很好的补充,让我重新看到了使用 vscode 的可能性。希望这篇文章能对其他有类似需求的开发者有所帮助。
到此这篇关于vscode使用sftp插件同步多个服务器的文章就介绍到这了,更多相关vscode同步多个服务器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论