建立SFTP远程同步是为了构建开发最常用的应用场景之一,就是在本地开发,完成开发后将代码上传到服务器中。另一种场是在本地直接打开远程服务器的项目文件,直接进行开发、运行、调试。这两种场景VScode都是支持的。本文将对第一种场景的构建做说明,满足最基本、最常用的开发。
1、插件下载
打开vscode,接着找开资源管理(ctrl+shift+x),输入sftp,
选择这一插件进行安装,这样就完成使用Vscode对本地与远程服务器同步文件的插件。
下载完成后,使用Vscode打开一个文件夹,作为项目文件夹。
该插件在github上的地址为:https://github.com/liximomo/vscode-sftp,更加详细的说明参请参见该github.
2、打开配置文件
输入Ctrl+Shift+P
,打开命令面板,输入sftp,会有很多选项,选择SFTP:Config
,通过对该文件的编辑来设置相关配置。
此时,会在项目文件夹中自动新建一个.vscode的文件夹,新建sftp.json并打开,初始的sftp.json内容,如图所示。当重新起一行,输入双引号后,系统会自动进行内容提示。
当重新起一行,输入双引号后,系统会自动进行内容提示,如下图所示,所以不用把这些内容都给记住,只要有个印像就行。
3、多种配置文式
我们有多种代码的同步方式和应用场景,
3.1 本地代码同步单台远程服务器
如sftp.json初始内容所示,使可以实现与单台远程服务器的同步,具体有:
{
"name": "My Server",
"host": "localhost",
"protocol": "sftp",
"port": 22,
"username": "username",
"remotePath": "/",
"uploadOnSave": true
}
name
:随便写,为自己要连接的服务器起个名字;
host
:主要写要连接主机的ip地址;
protocol
:传输协议,使用sftp;
port
:连接的端口号,使用默认的22就行;
username
:用户名,进行远程连接需要的用户名;
remotePath
:远程服务器的路径,如果没有会自动新建,与本地对应关系为如:/local/test 与/remote/not_test,那么test下的内容将完全上传到not_test里,如果not _test原来没有,会自动新建(随着Vscode版本的改进,也不一定会总是自动创建,需提前创建)。本地路径默认为打开的该项目的路径。
uploadOnSave
:默认是true,我们可以改成false,否则每次修改后保存的同时就会上传到远程服务器。
编辑好后,ctrl+s
保存sftp.json,然后在资源管理器中,鼠标右键单击,会有如下图所示,会有几个常用功能:
更多的功能还是要在命令板中输入sftp,右键的功能全部都有:
通常的操作是第一次要从服务器上下载代码。
第一次点击右键并上传到服务器,会弹出框让输入密码,然后按enter即可,
sftp.json中还有个参数是password
,可以把密码输入,这样就不会弹窗输密码(sftp.json每次修改再上传文件都要再次输入密码)
另外还有两个参数ignore
和ignoreFile
:
"ignoreFile": ".gitignore",
"ignore": [
".vscode",
".git",
".gitignore",
".DS_Store",
"__pycache__",
".remote-sync.json",
"*.zip",
"*.pptx",
"*.msg"
]
个人感觉,有ignore就可以了,把所有不想要同步的文件或文件夹全部放到ignore中。
context
是一个可以相对当前vscode workspace的路径来具体指定使用workspace那个文件(夹),与remotePath
是一对,决定如保上传的路径。
3.2 本地代码同步多台服务器
我们有一个应用场景,那就是一份代码需要在不同的远程机器上进行测试、运行,在本地可视化开发,然后同步到远程服务器并运行,或者上传到远程服务器,直接用vscode在远程服务器上开发。这里讲一下,如何将本机单个项目同步到多台服务器上。有点类似单台的,具体看一下配置。
"profiles": {
"profileName1": {},
"profileName2":{}
}
"defaultProfile": "profileName1"
上段代码中,有两个核心的参数,profiles
中指定两参服务器,每一台的配置和上文单台的是相同的,defaultProfile
是指定默认本地服务器要同步的远程服务器,所以一个时刻本地只与一台远程服务器同步。
总的配置为:
{
"name":"myproject",
"port":22,
"protocol": "sftp",
"ignore": [
".vscode",
".git",
".DS_Store"
],
"profiles": {
"server1": {
"host": "ip1",
"username": "user1",
"password": "user1passwd",
"remotePath": "/path1"
},
"server2":{
"host": "ip2",
"username": "user2",
"password": "user2passwd",
"remotePath": "/path2"
}
},
"defaultProfile": "server1"
}
要说明的是,profiles
中每个server中设置与profiles外头的是可以一样的,此时,会将外头的覆盖。
本文就写到这里,将来有新的应用场景再加。
4 查看远程文件
设置完sftp.json后,该文件保存在如下文件:
打开侧边栏的资源管理器,在项目文件的.vscode文件中,事实上,有关本项目文件的所有Vscode的配置文件都在.vscode中存放。
将项目文件按照上文方法上传到服务器,并查看服务器上文件:
侧边栏上的SFTP图标,点击:
文件夹名My Server
是由sftp.json中参数name
决定的,而不是远程服务器上项目文件夹的名称。可以看来上传的文件a.py。有时并不能立即显示文件内容,需要点击右上解的刷新标志进行刷新。
鼠标放到a.py上会显示在远程服务器上的位置路径,左击可以打开并查看该文件,如图中,前带一个波浪号。该文件是只读文件,不能进行修改。