VScode sftp插件使用【文件修改,重命名,删除均可自动同步】
先说目前已探明的功能,以及不能做到的事情
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,这样一来才可以保证同步。