# node-ftp-sync **Repository Path**: liuhongbin/node-ftp-sync ## Basic Information - **Project Name**: node-ftp-sync - **Description**: node写的ftp代码同步工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-07 - **Last Updated**: 2025-09-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GS Demo FTP实时同步工具 自动同步 `gs_demo_thinkphp\addons\gs_demo` 和 `gs_demo_thinkphp\public\assets\addons\gs_demo` 目录到远程FTP服务器。 ## 功能特性 - 🔄 **实时监控**: 监控文件变化并自动同步到FTP服务器 - 📁 **双目录同步**: 同时同步ThinkPHP插件和前端资源 - ⚡ **智能延迟**: 避免频繁上传,合并短时间内的多次变更 - 🚫 **智能过滤**: 自动排除不需要同步的文件(如 node_modules, .git 等) - 📝 **详细日志**: 彩色输出,清晰显示同步状态 - 🔧 **灵活配置**: 支持环境变量配置,适应不同环境 ## 快速开始 ### 1. 进入ftp-sync目录并安装依赖 ```bash cd ftp-sync npm install ``` ### 2. 配置FTP信息 复制配置文件模板: ```bash cp .env.example .env ``` 编辑 `.env` 文件,填入你的FTP服务器信息: ```env # FTP服务器配置 FTP_HOST=192.168.1.100 FTP_PORT=21 FTP_USER=your-username FTP_PASSWORD=your-password # 本地源文件路径(通常不需要修改) LOCAL_ADDON_PATH=gs_demo_thinkphp/addons/gs_demo LOCAL_ASSETS_PATH=gs_demo_thinkphp/public/assets/addons/gs_demo # 远程目标路径 REMOTE_ADDON_PATH=/addons/gs_demo REMOTE_ASSETS_PATH=/public/assets/addons/gs_demo # 同步选项 WATCH_MODE=true SYNC_DELAY=1000 EXCLUDE_PATTERNS=node_modules,.git,.DS_Store,*.log,*.tmp ``` ### 3. 测试连接 ```bash node ftp-sync.js test ``` ### 4. 开始使用 **实时监控模式**(推荐): ```bash npm run dev # 或 node ftp-sync.js watch ``` **一次性同步**: ```bash npm run sync # 或 node ftp-sync.js sync ``` **完整同步**: ```bash node ftp-sync.js full-sync ``` ## 使用场景 ### 开发环境实时同步 启动监控模式后,每当你修改以下目录中的文件: - `gs_demo_thinkphp/addons/gs_demo/` - ThinkPHP插件文件 - `gs_demo_thinkphp/public/assets/addons/gs_demo/` - 前端资源文件 工具会自动检测变化并上传到远程服务器对应位置。 ### 部署时批量同步 使用 `full-sync` 命令可以将所有文件同步到远程服务器,适合首次部署或大量文件变更后的同步。 ## 命令说明 | 命令 | 描述 | |------|------| | `sync` | 同步已变更的文件(基于git状态) | | `watch` | 启动文件监控模式,实时同步 | | `full-sync` | 完整同步所有文件到远程服务器 | | `test` | 测试FTP连接是否正常 | ## 配置选项 | 环境变量 | 描述 | 默认值 | |----------|------|--------| | `FTP_HOST` | FTP服务器地址 | **必填** | | `FTP_PORT` | FTP服务器端口 | `21` | | `FTP_USER` | FTP用户名 | **必填** | | `FTP_PASSWORD` | FTP密码 | **必填** | | `FTP_SECURE` | 是否使用FTPS | `false` | | `LOCAL_ADDON_PATH` | 本地插件路径 | `gs_demo_thinkphp/addons/gs_demo` | | `LOCAL_ASSETS_PATH` | 本地资源路径 | `gs_demo_thinkphp/public/assets/addons/gs_demo` | | `REMOTE_ADDON_PATH` | 远程插件路径 | `/addons/gs_demo` | | `REMOTE_ASSETS_PATH` | 远程资源路径 | `/public/assets/addons/gs_demo` | | `SYNC_DELAY` | 同步延迟(毫秒) | `1000` | | `EXCLUDE_PATTERNS` | 排除文件模式(逗号分隔) | `node_modules,.git,.DS_Store,*.log,*.tmp` | ## 注意事项 1. **路径配置**: 确保本地路径存在,远程路径会自动创建 2. **文件权限**: 确保FTP账户有足够权限创建目录和上传文件 3. **网络稳定**: 建议在稳定的网络环境下使用实时监控模式 4. **大文件处理**: 大文件上传可能需要较长时间,请耐心等待 5. **中断恢复**: 按 `Ctrl+C` 可以安全停止监控模式 ## 故障排除 ### FTP连接失败 1. 检查FTP服务器地址、端口、用户名密码 2. 确认FTP服务器允许当前IP连接 3. 检查防火墙设置 ### 文件上传失败 1. 检查远程目录权限 2. 确认磁盘空间充足 3. 检查文件是否被占用 ### 监控不生效 1. 确认本地目录路径正确 2. 检查文件权限 3. 确认排除模式没有误过滤需要的文件 ## 开发与扩展 项目结构: ``` ├── ftp-sync.js # 主程序入口 ├── lib/ │ ├── ftp-client.js # FTP客户端封装 │ └── file-watcher.js # 文件监控模块 ├── package.json # 依赖配置 ├── .env.example # 配置模板 └── README_FTP_SYNC.md # 使用说明 ``` 欢迎提交Issue和Pull Request来改进这个工具!