# 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
# 宝塔多服务器同步备份插件




**智能化异地服务器数据同步备份工具**
[功能特性](#功能特性) • [快速开始](#快速开始) • [使用文档](#使用文档) • [常见问题](#常见问题)
---
## 📖 项目简介
宝塔多服务器同步备份插件是一款专业的异地数据同步备份工具,支持将网站、数据库、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**