必须安装lukasz-wronski开发的ftp-sync插件(非liximomo的sftp或ftp-simple),认准蓝底白箭头图标、版本0.4.11,安装后重启VSCode;配置时host填IP、port按协议选21/22、remotePath需匹配宝塔FTP账户根目录的相对路径,且务必设passive:true、ignore排除.vscode/.git/node_modules,uploadOnSave开启易致空文件上传,建议手动上传并补全权限设置。

能用,但必须选对插件、配对协议、关掉自动上传陷阱——VSCode 本身不带 FTP 功能,靠插件实现同步;目前稳定可用的是 ftp-sync(作者 lukasz-wronski),不是已停更的 sftp(liximomo 版)或功能残缺的 ftp-simple。
怎么装 ftp-sync 插件才不会踩坑
直接在 VSCode 扩展市场搜 ftp-sync,认准作者是 lukasz-wronski,图标为蓝底白色循环箭头。别点错成 ftp-simple 或旧版 sftp,后者在 VSCode 1.80+ 上大概率报 command 'sftp.config' not found 错误。
- 安装后务必重启 VSCode,否则
ftp-sync:init命令可能不响应 - 企业内网若禁用了插件自动更新,手动检查插件页的「版本号」,2026 年最新稳定版是
0.4.11 - 如果命令面板里输
ftp-sync:init没反应,说明插件没加载成功,先卸载重装 + 强制重启
宝塔 FTP 账户和 ftp-sync 配置怎么对得上
宝塔面板新建 FTP 账户时,根目录 必须填绝对路径(如 /www/wwwroot/myapp),而 ftp-sync.json 里的 remotePath 是相对于该根目录的路径。很多人填成 /www/wwwroot/myapp 导致文件传到服务器根目录下,而不是项目目录里。
-
host填服务器公网 IP 或内网 IP(别填域名,除非你本地 hosts 已配好) -
port:FTP 用21,SFTP 用22;宝塔默认只开 FTP,别在配置里写"protocol": "sftp"却连 FTP 端口 -
passive设为true,否则内网或 NAT 环境下常卡在LIST命令超时 -
ignore至少加这三项:"\.vscode"、"\.git"、"node_modules",否则上传巨慢还可能爆磁盘
uploadOnSave = true 为什么反而导致文件丢失
开启 uploadOnSave: true 后,VSCode 保存文件瞬间触发上传,但此时如果文件正在被其他进程写入(比如 Webpack dev server 正在生成 dist/),就可能传一个空文件或半截文件过去。宝塔里看到文件大小为 0 字节,就是这个原因。
- 前端项目建议关掉
uploadOnSave,改用右键菜单Ftp-sync: Upload file手动传单个文件 - PHP/Python 后端项目可保留
uploadOnSave: true,但必须确保编辑器没开着dist/、__pycache__/这类自动生成目录 - 如果真要自动同步,把
watcher.files改成具体路径,比如"src/**/*.php",别用通配符"*"
最易被忽略的是权限继承问题:宝塔创建的 FTP 账户默认上传文件权限是 644,但 PHP 文件需要执行权限才能运行,ftp-sync 不会自动 chmod。要么在宝塔 FTP 设置里勾选「上传后自动设置权限」,要么在服务器上单独跑 chmod -R 755 /www/wwwroot/myapp —— 这步漏了,页面就会 500。


















