先說目前已探明的功能,以及不能做到的事情
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,這樣一來才可以保證同步。