vscode本身不支持镜像传输协议;实际可用的是liximomo.sftp扩展的单向同步或remote-ssh直连远程编辑,sftp.json中无mirror等字段,uploadonsave仅上传当前文件,非rsync式增量同步。

VSCode 本身不支持镜像传输协议
所谓“远程同步镜像传输协议”并不是一个标准术语,VSCode 也没有内置任何叫 mirror、rsync-over-sftp 或类似名称的同步机制。你实际能用的,只有两类稳定路径:一是通过 liximomo.sftp 扩展做单向/手动文件级同步;二是用 Remote - SSH 扩展直连远程环境,在远程进程里编辑、运行、调试——此时根本不存在“传输”,因为文件本就存于远端。
sftp.json 里没有 mirror 或 syncMode 字段
所有声称支持“镜像同步”的宣传,基本都混淆了概念。SFTP 协议本身不带 diff、增量或双向校验能力。sftp.json 配置中合法字段包括 uploadOnSave、ignore、filePermissions 等,但绝无 mirror、syncMode、delta 这类键名。填了也不会生效,VSCode 会静默忽略。
- 想接近“镜像效果”,只能靠
ignore列表 + 严格约定本地目录结构与remotePath对齐 -
uploadOnSave不是 rsync:它只传当前保存的单个文件,不会扫描整个目录比对差异 - 右键 Upload Folder 是全量覆盖式复制,不会跳过未改动文件,也不校验 checksum
真正接近镜像的替代方案只有两种
如果你需要类似 rsync 的行为(只传变更、保留权限、跳过相同文件),必须脱离 VSCode UI,走命令行或任务集成:
- 在
.vscode/tasks.json里定义一个shell类型 task,调用rsync -avz --delete命令,配合watch监听文件变化 - 用
Remote - SSH连上后,在远程终端里直接跑rsync或inotifywait + rsync脚本,本地只负责编辑 - 别依赖 SFTP 扩展做构建部署——它设计目标是开发期辅助上传,不是生产级同步工具
容易被忽略的权限和符号链接问题
即使配置全对、上传成功,liximomo.sftp 默认以用户 home 目录权限创建文件,且不保留 chmod 和 chown。符号链接会被转成普通文件上传,导致远程环境崩溃。这不是 bug,是 SFTP 协议限制——它不暴露底层 fs 元数据。若项目依赖精确权限或软链,必须在上传后手动 ssh 进去修复,或者改用 Remote - SSH 直接操作。











