# TowerSync **Repository Path**: jiulingyun_cn/tower-sync ## Basic Information - **Project Name**: TowerSync - **Description**: 宝塔Linux面板一对多异地服务器数据同步备份插件,支持网站、数据库、FTP、计划任务等自动同步,自动检测并配置目标服务器环境(Nginx/Apache/PHP/MySQL等),定时增量备份,确保数据安全。适用于多服务器环境的数据容灾备份和迁移场景。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-23 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: 宝塔面板, 服务器备份, 容灾备份, 一对多服务器备份, 宝塔插件 ## README # 宝塔多服务器同步备份插件
![Version](https://img.shields.io/badge/version-2.0.0-blue.svg) ![Platform](https://img.shields.io/badge/platform-Linux-green.svg) ![BT Panel](https://img.shields.io/badge/BT%20Panel-6.9.8+-orange.svg) ![License](https://img.shields.io/badge/license-MIT-brightgreen.svg) **智能化异地服务器数据同步备份工具** [功能特性](#功能特性) • [快速开始](#快速开始) • [使用文档](#使用文档) • [常见问题](#常见问题)
--- ## 📖 项目简介 宝塔多服务器同步备份插件是一款专业的异地数据同步备份工具,支持将网站、数据库、FTP账户、计划任务等数据自动同步到远程服务器,实现数据容灾备份和环境快速迁移。 ### 核心优势 - 🎯 **智能化环境适配** - 自动检测并安装目标服务器缺失的软件(Nginx/Apache/PHP/MySQL等) - ⏰ **定时自动备份** - 支持按分钟/小时设置同步周期,自动执行无需人工干预 - 🔄 **增量同步** - 支持重复执行,智能跳过已存在的数据 - 💼 **多服务器管理** - 一台服务器可配置多个备份目标,统一管理 - 🛡️ **数据安全** - 异地备份防止单点故障,确保业务连续性 --- ## ✨ 功能特性 ### 数据同步 - ✅ **网站同步** - 完整同步网站文件、配置、SSL证书、绑定域名 - ✅ **数据库同步** - 自动导出导入MySQL数据库,保留字符集和权限 - ✅ **FTP同步** - 同步FTP账户、密码和目录权限 - ✅ **计划任务同步** - 迁移所有计划任务配置 - ✅ **环境配置同步** - 同步反向代理、重定向、目录保护等配置 ### 智能功能 - 🔍 **环境检测** - 自动检测目标服务器环境并安装缺失组件 - 🚀 **PHP扩展同步** - 自动检测并安装PHP扩展 - ⚙️ **禁用函数同步** - 同步PHP禁用函数配置 - 🔒 **防任务重叠** - 文件锁机制防止同步任务并发执行 - 📊 **实时进度** - 详细的日志输出,实时查看同步进度 ### 用户体验 - 🎨 **现代化UI** - 美观的渐变紫色主题设计 - 📱 **响应式布局** - 支持桌面和移动端访问 - 🌐 **域名智能同步** - 自动同步所有绑定域名(包括主域名和附加域名) - ⏱️ **执行统计** - 显示同步耗时和成功/失败统计 - 🔔 **友好提示** - 周期过短时自动提示建议 --- ## 🖼️ 界面预览 ### 主界面 - 状态页面
状态页面

现代化渐变紫色主题,实时显示服务状态

### 同步配置管理
配置列表

卡片式布局,清晰展示所有同步配置

### 添加配置界面
添加配置

美观的配置表单,网格布局展示同步数据

### 日志查看
日志查看

深色主题日志查看器,图标化输出,详细的进度和统计信息

--- ## 🚀 快速开始 ### 系统要求 - **操作系统**:Linux(CentOS/Ubuntu/Debian等) - **宝塔面板**:6.9.8 及以上版本 - **Python**:3.5+ (宝塔自带) - **依赖包**:croniter、psutil ### 安装步骤 #### 方法1:ZIP包导入(推荐) 1. **下载插件包** - 在本项目的 [Releases](https://gitee.com/jiulingyun_oa/tower-sync/releases) 页面下载最新版ZIP包 - 或点击仓库页面的"克隆/下载" → "下载ZIP" 2. **导入到宝塔面板** - 登录宝塔面板 - 进入 `软件商店` → `第三方应用` - 点击 `导入插件` - 选择下载的ZIP文件 - 等待安装完成(自动安装依赖) 3. **启用插件** - 在已安装的插件列表中找到"多服务器同步备份" - 点击"设置"打开插件界面 > **💡 提示**:ZIP包会自动运行 `install.sh` 安装依赖,无需手动操作 #### 方法2:手动安装 ```bash # 1. 克隆项目到宝塔插件目录 cd /www/server/panel/plugin git clone https://gitee.com/jiulingyun_oa/tower-sync.git remoteback # 2. 运行安装脚本 cd remoteback bash install.sh install # 3. 刷新宝塔面板 # 直接刷新浏览器页面即可,无需重启面板 ``` #### 方法3:自己打包 如果你需要自己创建ZIP包: ```bash # 进入项目目录 cd /www/server/panel/plugin/remoteback # 打包(文件直接在ZIP根目录,无二级目录) zip -r ../remoteback.zip . \ -x "config/config.json" \ -x "config/sync_*.json" \ -x "config/.sync_*.lock" \ -x "backup/*" \ -x "__pycache__/*" \ -x ".git/*" \ -x "*.pyc" # ZIP包会生成在上级目录 # /www/server/panel/plugin/remoteback.zip # ZIP包结构(宝塔要求,文件在根目录): # remoteback.zip # ├── index.html # ├── info.json # ├── install.sh # ├── README.md # ├── LICENSE # ├── helpr.py # └── ...其他文件 ``` > **⚠️ 重要**:宝塔插件要求ZIP包中的文件直接在根目录,不能有二级目录! --- ## 📚 使用文档 ### 第一步:配置目标服务器 1. **开启目标服务器的API接口** - 登录目标备份服务器的宝塔面板 - 进入 设置 → API接口 - 开启API接口功能 - 将源服务器IP添加到白名单 2. **获取API密钥** - 在API接口页面复制API密钥 ### 第二步:添加同步配置 1. **打开插件** - 在宝塔面板中找到"多服务器同步备份"插件 - 点击"设置"打开插件界面 2. **添加配置** - 点击"同步设置" → "添加配置" - 填写以下信息: - **面板名称**:自定义名称,如"生产服务器1" - **面板地址**:目标服务器地址,如 http://192.168.1.100:8888 - **面板密钥**:目标服务器的API密钥 - **同步周期**:选择"按小时"或"按分钟",建议2小时以上 3. **选择同步数据** - 勾选需要同步的内容(至少选择一项) 4. **保存配置** - 点击"确定"保存 ### 第三步:启动同步 #### 定时自动同步 - 点击"状态" → "启动服务" - 插件会按设置的周期自动执行同步 #### 立即执行一次 - 点击"状态" → "直接运行" - 立即执行所有配置的同步任务 ### 第四步:查看日志 - **正常日志**:查看同步进度和结果 - **错误日志**:查看失败原因和错误详情 --- ## 🎯 使用场景 ### 1. 多服务器备份 将多台生产服务器的数据统一同步到一台备份服务器,实现集中式数据备份。 ### 2. 服务器迁移 快速将整个服务器环境(网站、数据库、配置等)迁移到新服务器。 ### 3. 数据容灾 定时异地备份,防止单点故障导致数据丢失。 ### 4. 环境复制 快速复制生产环境到测试或开发服务器。 --- ## ⚙️ 配置说明 ### 同步周期建议 | 数据类型 | 建议周期 | 说明 | |----------|----------|------| | 仅网站文件 | 2-4小时 | 文件多,传输耗时 | | 仅数据库 | 1-2小时 | 导出导入较快 | | 网站+数据库 | 4-6小时 | 综合耗时长 | | 全量同步 | 6-12小时 | 数据量大,建议凌晨执行 | --- ## 📋 项目结构 ``` remoteback/ ├── config/ # 配置文件目录 ├── static/ # 静态资源(CSS/JS) ├── templates/ # 页面模板 ├── helpr.py # 辅助函数库 ├── panel_api.py # 宝塔API封装 ├── psync.py # 核心同步逻辑 ├── remoteback_main.py # 主程序入口 ├── schedule.py # 定时调度器 ├── index.html # 主界面 ├── install.sh # 安装脚本 └── info.json # 插件信息 ``` --- ## 🔧 技术栈 - **后端**:Python 3 - **前端**:jQuery + Layui - **定时任务**:Cron + Croniter - **文件传输**:宝塔API + Requests - **并发控制**:文件锁(fcntl) --- ## 📝 更新日志 ### v2.0.0 (2025-10-20) #### 🎉 重大更新 - ✅ 全新现代化UI设计(渐变紫色主题) - ✅ 网站域名智能同步功能 - ✅ 防止同步任务重叠机制 - ✅ 配置名称唯一性保证(时间戳+UUID) #### 🐛 Bug修复 - ✅ 修复版本号字符串比较错误 - ✅ 修复nginx配置读取Bug - ✅ 修复URL解析错误 - ✅ 修复调度器时间计算问题 - ✅ 修复配置初始化检查Bug #### ✨ 功能优化 - ✅ 强制选择同步数据(不允许空配置) - ✅ 同步时间立即更新 - ✅ 详细的进度显示和统计 - ✅ 图标化日志输出 - ✅ 完善的异常处理 - ✅ 周期过短智能提示 --- ## ❓ 常见问题 ### Q1: 为什么同步任务不执行? **A:** 检查以下几点: 1. 确认已点击"启动服务" 2. 查看"状态"页面,确认显示"开启" 3. 检查日志是否有"跳过执行"提示(任务重叠) 4. 确认同步周期设置合理 ### Q2: 同步失败怎么办? **A:** 1. 查看"错误日志"页面,找到具体错误信息 2. 常见原因: - 目标服务器API密钥错误 - IP未加入白名单 - 目标服务器磁盘空间不足 - 网络连接问题 ### Q3: 提示"任务重叠"怎么办? **A:** - 说明上次同步还未完成 - 建议增加同步周期时间 - 或减少同步的数据量 ### Q4: 支持哪些数据同步? **A:** - ✅ 网站文件和配置 - ✅ 网站绑定的所有域名 - ✅ MySQL数据库 - ✅ FTP账户 - ✅ 计划任务 - ✅ SSL证书 - ✅ 反向代理、重定向、目录保护配置 --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! ### 提交规范 - 🐛 Bug修复:fix: 修复xxx问题 - ✨ 新功能:feat: 添加xxx功能 - 📝 文档:docs: 更新xxx文档 - 🎨 样式:style: 优化xxx样式 --- ## 📄 开源协议 本项目采用 MIT License 开源协议。 --- ## 👥 作者信息 - **作者**:yang - **邮箱**:26577792@qq.com - **官网**:[https://www.jiulingyun.cn](https://www.jiulingyun.cn) --- ## 🌟 致谢 感谢所有为这个项目做出贡献的开发者! 如果这个项目对你有帮助,欢迎 Star ⭐ 支持! ---
**Made with ❤️ by yang**