开发环境搭建7. Vscode使用SFTP远程文件同步

文章目录

  • 1、插件下载
  • 2、打开配置文件
  • 3、多种配置文式
    • 3.1 本地代码同步单台远程服务器
    • 3.2 本地代码同步多台服务器

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初始内容所示,使可以实现与单台远程服务器的同步,具体有:

1
2
3
4
5
6
7
8
9
{
    "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原来没有,会自动新建。本地路径默认为打开的该项目的路径。
uploadOnSave:默认是true,我们可以改成false,否则每次修改后保存的同时就会上传到远程服务器。
编辑好后,ctrl+s保存sftp.json,然后在资源管理器中,鼠标右键单击,会有如下图所示,会有几个常用功能:
在这里插入图片描述
更多的功能还是要在命令板中输入sftp,右键的功能全部都有:
在这里插入图片描述
通常的操作是第一次要从服务器上下载代码。
第一次点击右键并上传到服务器,会弹出框让输入密码,然后按enter即可,在这里插入图片描述
sftp.json中还有个参数是password,可以把密码输入,这样就不会弹窗输密码(sftp.json每次修改再上传文件都要再次输入密码)
另外还有两个参数ignoreignoreFile:

1
2
3
4
5
6
7
8
9
10
11
12
"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在远程服务器上开发。这里讲一下,如何将本机单个项目同步到多台服务器上。有点类似单台的,具体看一下配置。

1
2
3
4
5
"profiles": {
        "profileName1": {},
        "profileName2":{}
    }
"defaultProfile": "profileName1"

上段代码中,有两个核心的参数,profiles中指定两参服务器,每一台的配置和上文单台的是相同的,defaultProfile是指定默认本地服务器要同步的远程服务器,所以一个时刻本地只与一台远程服务器同步。
总的配置为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
    "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外头的是可以一样的,此时,会将外头的覆盖。
本文就写到这里,将来有新的应用场景再加。