引言
- 在之前文章Visual Studio Code(VS Code)远程Linux服务器环境搭建——SSH篇中,我们使用了SSH连接Linux服务器,但是这种方式占用Linux系统资源比较严重,会导致在服务器上做编译等任务,非常的卡顿。本文将探讨一种不怎么吃资源的方式——SFTP方式。
原理及特点
- 首先本地要有一个项目文件夹,同时远程也有一个项目文件夹,然后通过配置文件来同步二者。
- SFTP可以查看远程项目所有文件,但不能直接操作,必须先操作本地项目文件,再同步到远程项目。
操作步骤
安装SFTP扩展
使用VS Code打开某个项目
- 后续的配置是基于项目(目录)的,所以必须要先打开项目;
修改配置文件
修改方式
- 在当前项目中,输入ctrl + shift + p,之后输入 SFTP: config,会打开 sftp.json 文件,之后可在这个文件中修改配置;
在vscode中使用快捷键Ctrl+Shift+P ,会在所在的项目根目录中生成.vscode文件夹,输入 SFTP: config之后,.vscode目录下面会生成一个sftp.json配置文件。
配置模板
- SFTP之单服务器配置
{ "name": "自定义name", "context": "映射远程目录的本地目录地址", "host": "服务器IP", "protocol": "协议:[sftp/ftp]", "port": 22, "username": "username", "password":"password", "remotePath": "远程文件夹地址,默认/", "context": "本地文件夹地址,默认为vscode工作区根目录", "uploadOnSave": true, // 保存文件自动上传 "useTempFile": false, "openSsh": false // 要忽略的文件夹/文件 "ignore": [ "**/.vscode/**", "**/.idea/**", "**/.git/**", "**/.DS_Store", "**/node_modules/**" ], // 监听器 "watcher": { "files": "*" //需要监听变化的文件 "autoUpload": false //不自动上传 "autoDelete": false //不自动删除 } }
- SFTP之多服务器配置
{ "name": "自定义name", "context": "映射远程目录的本地目录地址", "protocol": "协议:[sftp/ftp]", "port": 22, "remotePath": "远程文件夹地址,默认/", "context": "本地文件夹地址,默认为vscode工作区根目录", "uploadOnSave": false, "useTempFile": false, "openSsh": false // 要忽略的文件夹/文件 "ignore": [ "**/.vscode/**", "**/.git/**", "**/.DS_Store" "**/node_modules/**" ], // 监听器 "watcher": { "files": "*" //需要监听变化的文件 "autoUpload": false //不自动上传 "autoDelete": false //不自动删除 } //上面这部分可沿用单服务器配置 "profiles": { // 这里开始是多个服务器的配置信息 "test_70": { // test_70 服务器name自定义 "host": "服务器IP", "username": "username", "password": "password" }, "test_71": { "host": "服务器IP", "username": "username", "password": "password" }, "test_72": { "host": "服务器IP", "username": "username", "password": "password" } } }
配置例子
[ { "name": "server11_mypri_libs", "context": "libs", "protocol": "ftp", "port": 21, "host": "11.11.11.11", "username": "qxhgd", "password": "12345678", "remotePath": "/code/20221001/mypri/libs", "uploadOnSave": true, "useTempFile": false, "openSsh": false }, { "name": "server11__mypri_main", "context": "main", "protocol": "ftp", "port": 21, "host": "11.11.11.11", "username": "qxhgd", "password": "12345678", "remotePath": "/code/20221001/mypri/main", "uploadOnSave": true, "useTempFile": false, "openSsh": false } ]
注意事项
- 配置文件中不要写注释,前面例子里加注释是为了说明字段的含义;
- 虽然前面配置模板一节,提供了很多字段,实际上不需要全部加上,根据需要选用即可。
- Linux系统和Windows系统中,context的格式有区别,需要格外注意;
- 具体字段含义说明
- name : 自定义,如果有两个以上目录,name必须不同
- protocol: 可以是ftp,也可以是sftp;
- privateKeyPath:存放在本地的已配置好的用于登录工作站的密钥文件,(可以是openssh格式的,也可以是ppk格式的),和password二选一;
- port: 如果protocol选ftp,则port对应21,否则对应22;
- context:本地路径(默认VSCode打开的文件夹为根目录)
- remotePath: 远程服务器路径 uploadOnSave: 保存文件时自动上传
- uploadOnSave: 本地更新文件保存会自动同步到远程文件(不会同步重命名文件和删除文件)
- downloadOnOpen: 从远程服务器下载打开的文件
- ignore:忽略的文件(匹配的文件不会同步)
- watcher:监听器(可以监听重命名文件和删除文件等操作)
- autoUpload:文件变更会自动同步(修改和重命名)
- autoDelete:文件删除会自动同步
实际使用
多服务器切换
- ctrl + shift + p 输入 SFTP: Set Profile 选择相应的服务器;
- 选择成功后 VSCode 左下角会出现服务器name。
同步方式
- 自动同步
- autoUpload和autoDelete开启,则文件修改、重命名、删除会自动同步到服务器;
- uploadOnSave:本地文件保存会自动同步到远程文件;
- 手动同步
- Upload Folder 和 Download Folder等在 uploadOnSave和 watcher都关闭的情况下才生效;如本地新增文件夹,则可选择Upload Folder,即可同步到远程服务器。
- 同步某部分工程文件,可以在需要同步的文件夹上面右键:选择Sync Local -> Remote,即可同步到远程服务器;Sync Remote-> Local,将远程服务器同步到本地;sync both directions:将远程和本地的代码同步至二者一致;
- 选中某一个文件,右键可以选Upload或Download对某个文件进行操作;