基于SSH与Nodemon:微服务本地与AWS远程Docker文件同步方案咨询
可行的本地-远程文件同步方案
1. rsync + inotify-tools 实时同步
这是轻量高效的实时同步方案,基于现有SSH连接即可实现:
- 步骤1:本地安装
inotify-tools(远程AWS实例默认已带rsync)- Debian/Ubuntu:
sudo apt install inotify-tools - macOS:
brew install inotify-tools
- Debian/Ubuntu:
- 步骤2:编写同步脚本(比如
sync-code.sh):#!/bin/bash LOCAL_DIR="/你的本地代码目录路径" REMOTE_USER="AWS实例用户名" REMOTE_HOST="AWS实例IP" REMOTE_DIR="/远程Docker挂载的代码目录路径" inotifywait -m -r -e create,modify,delete "$LOCAL_DIR" | while read -r _ _ _; do rsync -avz --delete "$LOCAL_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" done - 步骤3:赋予脚本执行权限并后台运行:
chmod +x sync-code.sh && nohup ./sync-code.sh & - 特点:无额外服务依赖,同步延迟低;需保持脚本后台运行,大文件批量变更时会有短暂等待。
2. VS Code Remote-SSH 直接远程编辑
如果用VS Code开发,这个方案最省心:
- 安装VS Code的Remote-SSH扩展,配置AWS实例的SSH连接信息
- 连接远程实例后直接打开远程代码目录编辑,文件直接保存在远程服务器
- 远程环境的nodemon可直接监听远程目录变更,无需额外同步工具
- 特点:操作直观,本地仅作为编辑界面;网络较差时编辑流畅度会受影响。
3. Nodemon 触发 rsync 同步
把同步逻辑和现有nodemon工作流绑定:
- 修改nodemon启动命令,每次文件变更时触发同步:
nodemon --watch ./ --exec 'rsync -avz --delete ./ AWS用户名@AWS实例IP:/远程代码目录/' - 本地文件变更时,nodemon会先同步代码到远程,再触发远程的构建流程
- 特点:和现有开发流程结合紧密;默认全量同步,可通过rsync的
--exclude参数优化为增量同步。
4. Git 钩子自动同步
若代码已用Git管理,可借助钩子实现提交时同步:
- 在本地仓库的
.git/hooks目录下创建pre-commit脚本:#!/bin/bash rsync -avz --delete ./ AWS用户名@AWS实例IP:/远程代码目录/ exit 0 - 赋予执行权限:
chmod +x .git/hooks/pre-commit - 每次本地commit时,代码会自动同步到远程
- 特点:和版本控制流程绑定,避免未提交代码的混乱;同步延迟取决于commit频率,不适合实时调试场景。
内容的提问来源于stack exchange,提问作者Cleriston Martins Cardoso
相关产品推荐
相关产品推荐

