如何实现本地文件与远程devcontainer的半自动化同步?
流程优化方案
你当前的工作流可以直接做核心简化,完全规避配置不同步和本地冗余文件的问题:
- 直接通过VS Code「远程-SSH」插件连接到Linux服务器,在服务器侧直接打开存放好的项目目录,直接启动Dev Container即可,不需要在本地克隆任何项目文件
- 所有开发、配置修改、Git提交操作都直接在服务器侧的容器内完成,不存在两份配置需要同步的问题,也完全不会占用本地磁盘空间存储冗余文件,同时和本地开发的体验没有差异
自动同步方案(针对需要离线编辑的场景)
如果确实需要保留本地文件、支持离线编辑,以下是两种可落地的自动同步方案:
方案1:VS Code本地触发同步
在本地项目的.vscode/tasks.json中配置触发任务:
{ "version": "2.0.0", "tasks": [ { "label": "sync-to-server", "type": "shell", "command": "wsl rsync -rlptzv --exclude=.git --exclude=node_modules $PWD marvink@s-dev01:~/code/new-project", "problemMatcher": [], "runOptions": { "runOn": "folderOpen" } } ] }
再搭配VS Code的「Run on Save」插件,配置保存文件时自动执行上述同步任务,即可实现本地修改自动同步到服务器。需要同步服务器侧改动回本地时,手动执行一次反向rsync命令即可。
方案2:本地后台静默同步
使用mutagen工具实现全自动双向同步,不需要手动处理冲突逻辑,也不需要在本地开放任何端口:
- 本地WSL环境安装mutagen,服务器也同步安装同版本mutagen
- 执行一次同步会话创建命令即可后台永久运行,断开网络后重连会自动续传:
mutagen sync create --name=project-sync ~/local/project/path marvink@s-dev01:~/code/new-project --ignore=.git --ignore=node_modules
同步冲突时mutagen会自动暂停同步并提示,手动处理冲突后恢复即可,完全不需要手动执行同步命令。
内容的提问来源于stack exchange,提问作者marvink
相关产品推荐
相关产品推荐

