先说目前已探明的功能,以及不能做到的事情
YES:
1. local 文件修改 自动/手动 推到remote
2. local文件重命名和删除 自动推到remote
3. 远端修改了文件,可以sync到本地
NO:
远端删除了一个文件是不能sync到本地的,至少我通过执行sync Remote --> local没有任何变化
(如果谁能请告诉我咋弄,感激不尽)
下面结合具体使用场景说一下这个工具怎么用
首先,代码啥的肯定都是在远程服务器上的,本想通过映射到本地驱动器来搞的,以前就是这么干的,最近不知为何网速不稳定,经常一卡一卡的
严重影响体验和工作效率,因此这才转向于sftp插件的帮助。
step1. 本地建立一个目录,用来存放远端服务器上的代码的副本,后面就基于这些副本在本地改动,然后把改动sync到远端
step2. 下载好插件后,ctrl+shift+P调出命令栏,输入sftp:config, 这个时候蹦出一个sftp.json配置文件
配置文件是最重要的,建议直接按照下面给的例子来配
这个例子算是能够比较好的满足我的需求了,它能处理以下需求:
1. uploadOnSave": true 表明本地的修改在ctrl + S后会自动同步到远端
2. "watcher": { "files": "GIT_EVERYDAY/*", "autoUpload": true, "autoDelete": true } 表明会监视/home/pi/GitPrac / GIT_EVERYDAY下面的所有文件的重命名和删除
的改动,并自动同步到远端
3. 可以管理两个目录的代码sync需求
[
{
"name": "My Pi Server",
"context": "GitPrac",
"host": "192.168.43.88",
"protocol": "sftp",
"port": 22,
"username": "pi",
"password": "access",
"remotePath": "/home/pi/GitPrac",
"uploadOnSave": true,
"watcher": {
"files": "GIT_EVERYDAY/*",
"autoUpload": true,
"autoDelete": true
},
"ignore": [
"**/.git/**"
]
},
{
"name": "My Pi Server",
"context": "libpal",
"host": "192.168.43.88",
"protocol": "sftp",
"port": 22,
"username": "pi",
"password": "access",
"remotePath": "/home/pi/Bridge",
"uploadOnSave": false,
"watcher": {
"files": "*",
"autoUpload": true,
"autoDelete": true
},
"ignore": [
"**/.git/**"
]
}
]
最后说一下使用规范,因为远端的删除操作貌似不能同步到本地,所以我一般这样操作来work around这个限制
那就是,所有文件的修改工作均为单向的,即从local 推改动到remote,不在remote端进行任何文件的改动
这样操作可以解决我在树莓派上的开发需求,但是还有一个场景。那就是我在家隔离办公,操作了local的改动到远端,然后到了公司
我是通过网络驱动器映射到本地来干活的,也就是说我会直接在远端服务器上对文件进行改动,这样一来,我再次回到家后,远端可能存在的
删除操作就无法同步过来了,因此,在上述场景下,需要回家后清掉本地的目录,从远端重新download对应的project,这样一来才可以保证同步。