網(wǎng)站做擔(dān)保交易網(wǎng)頁設(shè)計首頁制作
適用背景:
用自己電腦修改代碼,使用實驗室/公司的服務(wù)器煉丹的朋友
優(yōu)勢:
本地 <--> 服務(wù)器,實時同步,省去文件傳輸?shù)牟襟E
本地改 -> 自動同步到服務(wù)器 -> 服務(wù)器跑代碼 -> 一鍵同步回本地(真一鍵,就右擊按一下同步)
具體實現(xiàn)方式:
1. 安裝SFTP插件
2.?打開本地的項目文件夾
3.?ctrl + shift + p 打開搜索欄,輸入sftp,打開SFTP: Config
4. 配置文件修改,實現(xiàn)自動同步
本地->遠程,增刪改移全自動,不限文件/夾文件。注意是 本地到遠程 單向,反之 遠程->本地 無法自動同步,需要手動download到本地。
當(dāng)然遠程文件都是只讀的,你肯定是操作本地文件的,除了遠程代碼生成的新文件,這里是唯一需要手動download到本地的。
配置文件會生成在項目根目錄/.vscode/sftp.json
完整的配置參數(shù)信息:Configuration · Natizyskunk/vscode-sftp Wiki (github.com)
注意:sftp.json文件會自動創(chuàng)建在項目的.vscode文件夾中,.vscode文件夾在哪個項目里面,該同步效果就對哪個項目生效,并不是全局的
以下配置參數(shù)為重中之重,實現(xiàn)全自動同步請照抄:
最重要的5項請一模一樣:
{"...","watcher": {"files": "**/*","autoUpload": true,"autoDelete": true},"...","syncOption":{"delete": true},"...",
}"uploadOnSave": false, // set to false if watcher `autoUpload` is set to true & `files` is set to "**/*".
password:服務(wù)器密碼,不寫這個參數(shù)則每次都需要輸入密碼
privateKeyPath:本地端私鑰絕對路徑,用這個就可以不用password免密了,配置方法見VS code配置免密連接Linux服務(wù)器-CSDN博客
{"name": "My Server","host": "xxx.xxx.xx.xxx", #你要連接的服務(wù)器的IP地址"protocol": "sftp", #也可以用ftp方式,sftp更安全"port": 22, #sftp,默認端口是22;ftp,默認端口是21"username": "xxx", #遠程服務(wù)器的名稱"password": "xxx", #遠程服務(wù)器的用戶登錄密碼"privateKeyPath": "c:/Users/xxx/.ssh/id_rsa""remotePath": "/home/xxx/project", #本地項目要同步到遠程電腦上的路徑,必須是絕對路徑"uploadOnSave": true, #本地更新文件內(nèi)容會自動同步到遠程文件"downloadOnOpen":true, #填true就行,打開遠程文件時自動將其下載到本地"ignore": [".vscode"], #忽略的文件/文件夾,不會被同步"watcher": { #監(jiān)視器(可以重命名文件和刪除文件)"files": "**/*", #監(jiān)視項目根目錄下所有文件是否更改。"autoUpload": true, #本地有更新操作時,遠程自動更新(增刪改移)"autoDelete": true #本地有刪除操作時遠程自動刪除}
}
按照如上配置后,本地->遠程 所有操作都是全自動同步。
? ? "downloadOnOpen": true 會自動同步(下載)打開的文件(本地端本身就有,但是遠程端改寫了內(nèi)容的文件,即 遠程->本地 的 “改” 通過該參數(shù)可以實現(xiàn)自動同步(需要打開該文件))
然后 遠程->本地 的同步,比如遠程跑代碼生成的文件或者改動的文件(刪除和移動操作不會同步),通過在本地目錄空白處鼠標(biāo)右鍵(或者在擴展設(shè)置鍵盤快捷鍵)——? Remote -> Local 或者 Download Folder
所以 遠程端盡量不要做刪除和移動文件的操作,如果在遠程端移動或刪除了文件,然后點同步了。如果是移動操作,那本地端原位置和新位置都會有這個文件(刪除操作的話就是沒變化,本地端原文件還在那里)
簡單來說就是遠程同步到本地只增不減,灰色為最終結(jié)果:
遠程端 /home/xxx/a --移動-->?/home/yyy/a,本地端 /home/xxx/a +?/home/yyy/a
遠程端?/home/xxx/a --刪除--> 無,本地端?/home/xxx/a
其實也不麻煩,只需要在本地端手動刪除原位置的/home/xxx/a即可
下面其他配置參數(shù),僅供參考:
{"name": "My Server","host": "xxx.xxx.xx.xxx", #你要連接的服務(wù)器的IP地址"protocol": "sftp", #也可以用ftp方式,sftp更安全"port": 22, #sftp,默認端口是22;ftp,默認端口是21"username": "xxx", #遠程服務(wù)器的名稱"password": "xxx", #遠程服務(wù)器的用戶登錄密碼"remotePath": "/home/xxx/project", #本地項目要同步到遠程電腦上的路徑,必須是絕對路徑"uploadOnSave": true, #本地更新文件保存會自動同步到遠程文件(不會同步重命名文件和刪除文件)"downloadOnOpen":false, #填false就行,打開遠程文件時自動將其下載到本地"watcher": { #監(jiān)視器(可以重命名文件和刪除文件)"files": "**/*", #監(jiān)視項目根目錄下所有文件是否更改。當(dāng)然如果有需要你也可以把這里的值改成項目中某個文件或文件夾的相對路徑,這樣你的項目代碼中只有你指定的文件或文件夾會被同步到遠程"autoUpload": true, #本地有更新操作時,遠程自動更新(修改和重命名)"autoDelete": true, #本地有刪除操作時遠程自動刪除}
}
{"host": "遠程服務(wù)器IP地址","port": 22,"username": "遠程服務(wù)器登錄名","password": "遠程服務(wù)器密碼","protocol": "sftp","agent": null,"privateKeyPath": null,"passphrase": null,"passive": false,"interactiveAuth": true,"remotePath": "遠程服務(wù)器路徑,如(/usr/local/...)","uploadOnSave": true,"syncMode": "update","ignore": ["**/.vscode/**","**/.git/**","**/.DS_Store"],"watcher": {"files": "**/*","autoUpload": true,"autoDelete": true}}
5. 手動同步(可跳過不看)
這里與Remote-SSH相反,SFTP不能直接修改遠程文件,它的運作方式是本地修改自動同步到遠程,遠程修改手動下載到本地,可以單文件同步,也可以整個文件夾同步,非常靈活,免去文件傳輸。
遠程目錄和文件只用以下選項:
本地目錄和文件只用以下選項:
tip1:本地同步文件夾到遠程也是在遠程目錄右擊,而不是本地文件夾右擊
tip2:配置文件里面參數(shù)"uploadOnSave": true就不需要手動上傳到遠程了,只有第一次需要“Upload Folder”把整個文件夾上傳過去
補充1:你在本地文件目錄右鍵時或許會看到如下選項,你可以按需使用:
sync both directions:將遠程和本地的代碼同步至二者一致(會提示哪邊缺少文件)
sync local -> remote : 遠程同步到本地(只同步變化的地方,速度快)
??????????????sync remote -> local: 遠程同步到本地(只同步變化的地方,速度快)
upload folder:遠程文件夾同步到本地(不管有沒有變化都會掃描整個文件夾,慢)
download folder:遠程文件夾同步到本地(不管有沒有變化都會掃描整個文件夾,慢)
這些選項,可以讓你在比如本地代碼誤刪、遠程端添加了項目文件等情況下,從遠程拷貝項目到本地